如何从传递给 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中文网其他相关文章!