Python實現並行備忘

先把工作寫成單參數函數func,然後調用multiprocessing.Pool,設置計算使用的核心數,通過map將參數分配給func進行計算,簡單實現如下。

from multiprocessing import Pool

def func(parameter):
    ...

pool = Pool(4)  # set the pool size to 4
pool.map(func, parameter)
pool.close()
pool.join()

上述代碼使用4個核心進行計算,運行後用top查看進程可以看到四個相同的Python進程,單個進程CPU佔用率最高100%。這種多進程實現適用於CPU密集型工作。

多參數函數的並行需要對參數做進一步封裝,可以參見https://www.rawidn.com/posts/Python-multiprocessing-for-multiple-arguments.html

對於IO密集型工作可以調用multiprocessing的子庫dummy實現,導入部分如下,其他代碼不變。

from multiprocessing.dummy import Pool

運行時只有一個Python進程,但其CPU佔用率可以超過100%。

更詳細的說明可以參見https://segmentfault.com/a/1190000000414339

此外,還可以通過Parallel Python模塊實現,但目前還沒具體測試,其使用可以看見http://wiki.jikexueyuan.com/project/python-actual-combat/tutorial-25.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章