如何恢复传递给 multiprocessing.Process 的函数的返回值? [英] How can I recover the return value of a function passed to multiprocessing.Process?
本文介绍了如何恢复传递给 multiprocessing.Process 的函数的返回值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在下面的示例代码中,我想恢复函数worker
的返回值.我该怎么做呢?这个值存储在哪里?
In the example code below, I'd like to recover the return value of the function worker
. How can I go about doing this? Where is this value stored?
示例代码:
import multiprocessing
def 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
中的对象中找到相关属性.
I can't seem to find the relevant attribute in the objects stored in jobs
.
推荐答案
使用 共享变量 进行通信.例如像这样:
Use shared variable to communicate. For example like this:
import multiprocessing
def 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 的函数的返回值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文