具有不同功能的多进程池
发布于 2021-01-29 17:39:34
多进程工作池的大多数示例在不同的进程中执行单个功能,例如
def foo(args):
pass
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=30)
res=pool.map_async(foo,args)
有没有办法处理池中的两个不同且独立的功能?这样就可以为foo()分配fe
15个进程,为bar()分配15个进程,还是将池绑定到单个函数?或者,您必须使用以下命令手动创建用于不同功能的不同过程
p = Process(target=foo, args=(whatever,))
q = Process(target=bar, args=(whatever,))
q.start()
p.start()
忘了工人池吗?
关注者
0
被浏览
49
1 个回答
-
要传递不同的功能,您可以简单地
map_async
多次调用。这里有一个例子来说明这一点,
from multiprocessing import Pool from time import sleep def square(x): return x * x def cube(y): return y * y * y pool = Pool(processes=20) result_squares = pool.map_async(f, range(10)) result_cubes = pool.map_async(g, range(10))
结果将是:
>>> print result_squares.get(timeout=1) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> print result_cubes.get(timeout=1) [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]