如何恢復(fù)傳遞給multiprocessing.Process的函數(shù)的返回值?在下面的示例代碼中,我想恢復(fù)函數(shù)的返回值worker。我該怎么做呢?這個值存儲在哪里?示例代碼:import multiprocessingdef worker(procnum): '''worker function''' print str(procnum) + ' represent!' return procnumif __name__ == '__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輸出:0 represent!1 represent!2 represent!3 represent!4 represent![<Process(Process-1, stopped)>, <Process(Process-2, stopped)>, <Process(Process-3, stopped)>, <Process(Process-4, stopped)>, <Process(Process-5, stopped)>]我似乎無法在存儲的對象中找到相關(guān)屬性jobs。
3 回答

哈士奇WWW
TA貢獻(xiàn)1799條經(jīng)驗 獲得超6個贊
使用共享變量進(jìn)行通信。例如這樣:
import multiprocessingdef worker(procnum, return_dict): '''worker function''' print str(procnum) + ' represent!' return_dict[procnum] = procnumif __name__ == '__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()

慕田峪4524236
TA貢獻(xiàn)1875條經(jīng)驗 獲得超5個贊
簡單的解決方案:
import multiprocessing output=[]data = range(0,10)def f(x): return x**2def handler(): p = multiprocessing.Pool(64) r=p.map(f, data) return rif __name__ == '__main__': output.append(handler())print(output[0])
輸出:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
添加回答
舉報
0/150
提交
取消