2014-12-24 123 views
0

我正在做一點python多線程編程,發現我的代碼結果奇怪,根本不是並行(8核心,8線程,13%cpu利用率)。然後我找到了一個python GIL術語和這些幻燈片(http://www.dabeaz.com/python/GIL.pdf)。 python是不是可並行化的嗎? 多處理模塊是否有助於利用計算資源,或者存在另一個性能問題?python多線程編程

+0

你使用哪個多線程庫? – Nebril

+0

http://stackoverflow.com/questions/6821477/python-code-performance-decreases-with-threading – NPE

+0

@Nebril我使用標準線程模塊,你可以推薦別的東西。因爲產生新的流程並不適合我。 – itun

回答

2

docs

CPython的實現細節:在CPython的,由於全球 解釋器鎖,只有一個線程可以執行Python代碼一次 (即使某些業績爲導向的庫可能克服 這個限制)。如果您希望您的應用程序更好地使用多核機器的計算資源,建議您使用 使用多處理器。但是,如果要同時運行多個I/O限制的任務,線程仍然是合適的模型 。

拇指一般規則:

當你的瓶頸是I/O(如寫入磁盤...) - 考慮threading它允許程序繼續運行的其他地方時有物體擋住執行路徑。

當你的瓶頸是CPU功耗時,考慮允許CPU利用率的multiprocessing

+0

如果我不能產生新的進程,我該怎麼辦?有沒有任何第三方庫通常意義上使用線程。 – itun

+0

你應該去蟒蛇的房間尋求建議,而不是在這裏開始一個基於意見的討論。聊天室:http://chat.stackoverflow.com/rooms/6/python –