[問題] python GIL 平行運算相關的問題

看板Python作者 (阿真)時間14年前 (2011/04/01 04:09), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
呼~ 上網找了很多相關資料 但還是一頭誤水 有人可以給我幫忙一下嗎 我的認知 首先GIL會造成python的thread在多核cpu上反而比較慢 但如果是用Cextension的話 就不用考慮這個問題 (怎麼樣叫Cextension呢??) 否則 要能夠快的話 需要使用process?? 似乎是產生二個python interpreter 像跑msn跟skype二個無關的程式 分別用不同的cpu就行了 缺點是 二個process不好直接溝通 (二個process怎麼指定cpu啊?? 是os自己指定的嗎) 我上網找了parallel python (pp) 裡面說得好神奇啊~ pp 可以解決GIL的問題 使用了process跟IPC 就行了… pp是全用python寫的…為什麼能解決GIL,多核的問題呢 我看了一下pp的程式碼 裡面有import socket 我認為IPC就是指socket的部份 用在兩process之間溝通 網上也有些實驗說pp在"process之間的溝通量很大"的時候 效果不顯著 感覺pp必順花時間在複製這些訊息上 另外pp還能調整cpu的使用數…這個一般是怎麼做到的呢 (幾個cpu就開幾個process 讓os自己選嗎??) 因為pp 用socket 所以可以用cluster計算 我覺得頗強大 本來pp測試起來是不錯 但是我將它放到QGIS上面 import pp 建個server類別的 instance 竟然會讓QGIS再開一個 然後出現一些錯誤… 這個超過我能debug的範圍orz… 所以我才想說有沒有什麼自己實作多核加速的算法 應該說是平行運算吧?? 才能自己掌握能加在QGIS上 python2.6之後有multiprocessing模組 但我是用2.5的 還沒有去細看 不知道效果如何 算不算天生支援多核了呢?? 希望版上有在做這塊的人 能夠給我一些建議 感謝你 <(_ _)> ps.如果多核(multi-core)、多台(cluster)的平行運算有難度 我也想試試只有"多台"的平行運算 因為至少比一台好啊XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.63.249
文章代碼(AID): #1DbD-8hK (Python)
文章代碼(AID): #1DbD-8hK (Python)