2014-03-13 25 views
0

我想要更改multiprocessing.pool中的進程數,但我不明白該如何操作。 有沒有辦法做到這一點,或者我應該嘗試殺死舊的並創建一個具有不同數量的進程的新池,如果是的話,我該如何殺死舊池?正在使用close()就足夠了?如何更改multiprocessing.pool中的進程數量?

回答

1

有一種私人方法,multiprocessing.pool._repopulate_pool它可以改變池中的工人數量。但是,我認爲你不應該使用這個。首先,由於該方法的名稱以下劃線開頭,因此它是一個私有方法 - 一個實現細節。從理論上講,它可能會在未來發生變化並破壞您的代碼。

但也許更重要的是,您的機器具有有限數量的處理器。一般來說,這是在您的池中使用的理想數量的進程。如果你有更多的事情,那麼你的游泳池工作人員將爭取自己的CPU訪問。如果你的問題是CPU限制的,那麼擁有比CPU更多的工作者是沒有好處的。

如果你想限制由多池所使用的CPU數量,那麼這將是最容易提前確定硬限制應該是什麼和實例池使用的工人數量從一開始就:

pool = mp.Pool(processes=4) 

還要注意,mp.cpu_count()返回可用處理器的數量。如果您未設置processes參數,mp.Pool默認情況下將使用mp.cpu_count()進程。

相關問題