您正在寻求使用多个进程来完成一些令人尴尬的并行工作,那么为什么不使用Pool
? A Pool
将负责启动流程、检索结果并将结果返回给您。
I use pathos
,其中有一个叉子multiprocessing
,因为它比标准库提供的版本具有更好的序列化能力。
(.py) 文件
from pathos.multiprocessing import ProcessingPool as Pool
def foo(obj1, obj2):
a = obj1.x**2
b = obj2.x**2
return a,b
class Bar(object):
def __init__(self, x):
self.x = x
Pool().map(foo, [Bar(1),Bar(2),Bar(3)], [Bar(4),Bar(5),Bar(6)])
Result
[(1, 16), (4, 25), (9, 36)]
你看到了foo
接受两个参数,并返回两个对象的元组。这map
的方法Pool
提交foo
到底层进程并将结果返回为res
.
你可以得到pathos
here: https://github.com/uqfoundation https://github.com/uqfoundation