如何從傳遞給multiprocessing.Process 的函數中檢索回傳值
將函數傳遞給multiprocessing.Process 時,通常需要檢索函數的回傳值。但是,這些值在傳回的 Process 物件中不容易存取。
請考慮以下代碼:
import multiprocessing
defworker(procnum):
'''worker function''' print str(procnum) + ' represent!' return procnum
如果名字== '__main__':
jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i,)) jobs.append(p) p.start() for proc in jobs: proc.join() print jobs
預期的回傳值無法透過 'jobs' 中的 Process 物件取得。
解決方案:使用共享變數
為了檢索回傳值,可以利用共享變數來啟用主進程與工作進程之間的通訊
導入多處理
defworker(procnum, return_dict):
"""worker function""" print(str(procnum) + " represent!") return_dict[procnum] = procnum
if 名稱 == "__main__":
manager = multiprocessing.Manager() return_dict = manager.dict() jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i, return_dict)) jobs.append(p) p.start() for proc in jobs: proc.join() print(return_dict.values())
解釋:
以上是如何從 multiprocessing.Process 函數擷取回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!