看板 Python 關於我們 聯絡資訊
有時候再寫多執行緒程式的時候會有些困惑 到底是該選擇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
lucky17:文章代碼(AID): #1ACwmai7 07/17 02:13
ellinas:CPU-bound => multiprocess IO-bound => multithread 07/19 01:01
ellinas:有人分享的測試 http://ppt.cc/OjEB 07/19 01:04
ellinas:所以似乎不同平台 實作方式不同 也會影響效能 07/19 01:05