我有一個有趣的多處理問題,我可能可以利用它的結構。這個問題涉及Pandas中有大量列((df
)),其功能func
在對(〜80 * 79/2對)的df
上運行,並且花費相當短的時間每次運行。多處理執行許多快速計算
的代碼看起來像
mgr = Manager()
ns = mgr.Namespace()
ns.df = df
pool = Pool(processes=16)
args = [(ns, list(combo)) for combo in list(combinations(df.columns, 2))]
results = pool.map(func, args)
pool.close()
以上並不快,但比沒有游泳池,但速度更快只用了7個左右的一個因素。我擔心這麼多電話的開銷是問題所在。有沒有一種很好的方法來利用MultiProcessing的結構?
pool.join()在此腳本中沒有做任何事情pool.map已經按照參數的順序返回一個列表,並且pool.close()已經關閉了您嘗試加入的池。 – Michael 2014-11-04 23:57:04
哎呀謝謝邁克爾 – rhaskett 2014-11-05 00:36:06