0
我正在使用multiprocessing
包生成執行函數的多個進程,例如func
(使用不同的參數)。 func
進口numpy
包,我想知道每個進程是否會導入包。實際上,主線程或主流程也會導入numpy
,並且可以在不同func
之間輕鬆共享執行進程。在Python進程之間共享導入
由於多次導入庫會導致性能下降。
我正在使用multiprocessing
包生成執行函數的多個進程,例如func
(使用不同的參數)。 func
進口numpy
包,我想知道每個進程是否會導入包。實際上,主線程或主流程也會導入numpy
,並且可以在不同func
之間輕鬆共享執行進程。在Python進程之間共享導入
由於多次導入庫會導致性能下降。
我想知道每個進程是否會導入包。
假設導入過程發生後,然後,是的。雖然你可以通過在fork之前進行導入來避免這種情況。
由於多次導入庫會導致性能下降。
那麼,如果你在fork之後進行導入,性能會受到影響,但可能不是「主要」之一。操作系統很可能在其緩存中包含所有必需的文件,因此它只能從RAM讀取,而不能讀取磁盤。
更新
就注意到了這一點......
事實上,主線程,或者更確切地說,主要工藝也進口
numpy
...
如果你在分叉之前已經導入numpy
,那麼子流程中的導入只會創建對現有導入模塊的引用。這應該不到一毫秒,所以我不會擔心它。
我不確定'multiprocessing'產生的進程是否是主進程的子進程。我一直認爲他們是與主流程溝通的不同流程。在這種情況下,他們每個人都有自己的Python解釋器,並且需要單獨導入庫。 – abhinavkulkarni
@abhinavkulkarni您正在使用哪種操作系統? – Aya
'Ubuntu 12.10'。 – abhinavkulkarni