我需要并行执行3个函数并从每个函数中检索一个值。
这里是我的代码:
def func1():
...
return x
def func2():
...
return y
def func3():
...
return z
p1 = Process(target=func1)
first = p1.start()
p2 = Process(target=func2)
second= p2.start()
p3 = Process(target=func3)
third = p3.start()
p1.join()
p2.join()
p3.join()
但第一、第二和第三个似乎是“非类型”对象。
我的密码怎么了?
谢谢
有几种不同的方法可以解决这个问题。最简单的方法是使用
multiprocessing.Pool
和apply_async
函数:multiprocessing.Pool
是一个非常有用的构造,它通过设置管道和队列以及其他需要的东西来处理进程之间的底层通信。最常见的用例是使用.map
函数将它与不同的数据一起使用到同一个函数(分配工作)。但是,它也可以用于不同的函数,例如像我在这里所做的.apply_async
构造。但是,这在解释器中不起作用,但必须存储为
.py
文件并使用python filename.py
运行。在理解您的用例后,我建议使用multiprocessing.Pool。类似于@JohanL solution。
相关问题 更多 >
编程相关推荐