[問題] multithread 與 multiprocess的選擇

看板Python作者 (請多指教!!)時間14年前 (2011/07/15 00:31), 編輯推噓3(303)
留言6則, 4人參與, 最新討論串1/1
有時候再寫多執行緒程式的時候會有些困惑 到底是該選擇thread還是process 先忽略掉每個job間的溝通問題 如果是一台server 有兩顆CPU 每個有12個core (隨便舉例) 用C/C++寫的話應該直覺想到是用multi-thread來寫 才比較榨乾server的資源 不過因為python有 GIL的問題 這一切又開始讓我困惑了... 到底用哪一種方式才可以用到所有的core資源呢= =? 剛剛用了我的桌機測試了一次 (win7-64bits) 用簡單的程式跑了一下3個thread(我的是三核心CPU) 可以看到三個core都有明顯 loading上升的情況(不過還未到100%) 這...又算是 GIL嗎 = =? 我所理解的GIL應該會把三個threads都綁在同一個core上 還是他其實是綁在同一顆CPU上= =? 另外 如果他們不需要共享資源 (例如一個用IO 一個用CPU) 這樣還會lock 使得同一時間只有一個thread運行嗎 ?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.62.26

07/15 01:18, , 1F
可以找 David Beazley 的 GIL 投影片/演講來讀
07/15 01:18, 1F

07/15 14:34, , 2F
據說試看應用~看你的thread/process會不會常創造
07/15 14:34, 2F

07/17 02:13, , 3F
文章代碼(AID): #1ACwmai7
07/17 02:13, 3F

07/19 01:01, , 4F
CPU-bound => multiprocess IO-bound => multithread
07/19 01:01, 4F

07/19 01:04, , 5F
有人分享的測試 http://ppt.cc/OjEB
07/19 01:04, 5F

07/19 01:05, , 6F
所以似乎不同平台 實作方式不同 也會影響效能
07/19 01:05, 6F
文章代碼(AID): #1E7ndAVc (Python)
文章代碼(AID): #1E7ndAVc (Python)