作者CMJ0121 (請多指教!!)
看板Python
標題[問題] multithread 與 multiprocess的選擇
時間Fri Jul 15 00:31:03 2011
有時候再寫多執行緒程式的時候會有些困惑
到底是該選擇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
→ yjc1:可以找 David Beazley 的 GIL 投影片/演講來讀 07/15 01:18
→ final01: 據說試看應用~看你的thread/process會不會常創造 07/15 14:34
推 ellinas:CPU-bound => multiprocess IO-bound => multithread 07/19 01:01
→ ellinas:所以似乎不同平台 實作方式不同 也會影響效能 07/19 01:05