【发布时间】:2014-01-03 07:16:12
【问题描述】:
我是多进程的新手,有一些非常基本的查询。
我有三个可以并行化的函数 (fun1(<list>),fun2(<dict>,<int>),fun3(<dict>,<dict>))。 fun1(字典)的输出是fun2 的输入等等。
我必须合并所有运行 fun1 的工作人员的输出,然后再将其传递给 fun2(对于 fun2 -> fun3 转换类似)。
考虑这段代码:
if __name__=='__main__':
process1=[]
for i in range(args.numcores):
p1=Process(target=fun1, args=(m[i],))
process1.append(p1)
p1.start()
for p in process1:
p.join()
process2=[]
for i in range(args.numcores):
p2=Process(target=fun2, args=(g,j, ))
process1.append(p1)
p2.start()
for p in process2:
p.join()
- 我可以合并不同工作人员返回的字典,但我如何首先保存这些返回值(换句话说,返回对象保存在哪里)?
- 既然
p2.start()跟随p1.join(),这是否意味着process2将在process1终止之后启动?
【问题讨论】:
-
multiprocessing.Pool可能对你有用。