2016-08-31 31 views
0

我開始欣賞線程庫對python的用處,我想知道什麼是最佳的線程數保持開放,以最大限度地提高效率腳本我正在運行。CPU核心,胎面和工作人員的最佳數量 - python線程

請你記住,我唯一的重點就是速度,我不需要多任務/做其他的東西(認爲計算專用服務器)

具體而言,如果我在4運行內核/ 4線程CPU,最佳線程數是4? 8? 16?再說一遍,如果我的核心數量不止一個(4核心8 t),答案會改變嗎?另外,cpu時鐘是否影響這些?

我知道這件事有各種各樣的含義,但就我對這個問題的研究而言,我仍然覺得自己處於黑暗中。 (我收集它並不像n個線程= n個進程那麼簡單)

+1

線程庫不處理多個內核。檢查多處理庫。只需注意與內存中對象的處理方式的區別。 –

+2

如果您正在嘗試最佳利用所有核心,那麼Python線程無法幫助您。全球口譯員嚴重鎖定neuters Python線程。 – user2357112

+1

要進一步評論,線程庫適合處理IO綁定任務。如果您要使用線程庫,那麼請注意,由於GIL,您將不會受益於爲CPU綁定任務運行多個線程。 –

回答

1

這個問題非常複雜,因爲在同一個CPU上可以有任意數量的其他線程在運行,而這些進程不受您控制。

取而代之,您可以根據創建新線程所需的時間,估計何時某個代碼片段值得由單獨的線程執行。

+0

我知道GIL,不明白它也影響了線程建立的功效。多處理的問題是,除非我以更高效的方式設計我的代碼,否則我會產生大量的開銷損害性能 – Asher11