Python實現並行備忘

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

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密集型工做。python

多參數函數的並行須要對參數作進一步封裝,能夠參見https://www.rawidn.com/posts/Python-multiprocessing-for-multiple-arguments.htmlsegmentfault

對於IO密集型工做能夠調用multiprocessing的子庫dummy實現,導入部分以下,其餘代碼不變。函數

from multiprocessing.dummy import Pool

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

更詳細的說明能夠參見http://www.javashuo.com/article/p-sxxdkowt-du.html測試

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

相關文章
相關標籤/搜索