如何恢复传递给multiprocessing.Process的函数的返回值?
在下面的示例代码中,我想恢复该函数的返回值worker
。我该怎么做呢?此值存储在哪里?
示例代码:
import multiprocessingdef worker(procnum):
'''worker function'''
print str(procnum) + ' represent!'
return procnum
if __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)>]
我似乎在中存储的对象中找不到相关的属性jobs。
回答:
使用共享变量进行通信。例如这样:
import multiprocessingdef worker(procnum, return_dict):
'''worker function'''
print str(procnum) + ' represent!'
return_dict[procnum] = procnum
if __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()
以上是 如何恢复传递给multiprocessing.Process的函数的返回值? 的全部内容, 来源链接: utcz.com/qa/433729.html