27
我使用Python多處理模塊在Monte Carlo代碼中實現了一些簡單的並行性。我有一些代碼看起來像:我可以從multiprocessing.Process獲取返回值嗎?
montecarlos = [MonteCarlo(f,fargs) for fargs in farglist]
jobs = [multiprocessing.Process(mc) for mc in montecarlos]
for job in jobs: job.start()
for job in jobs: job.join()
results = [mc.results for mc in montecarlos]
然而,當我在看搜索結果列表,它看起來像蒙特卡羅迭代器甚至還沒有開始。我知道他們有,因爲我可以在monte carlo步驟中將流程打印出來。所以我正在做一些愚蠢的事情。我曾認爲job.join()會保持結果列表不被構建,直到所有內容都已經運行,因此mc.results字段將被更新。
我意識到我沒有告訴你我的蒙特卡羅程序的細節,並希望它沒有關係,我犯的錯誤是我的解釋是什麼多處理。預先感謝您提供的任何幫助。
這很好用!非常感謝!還要感謝有關發生了什麼的清晰解釋。 – Rick