具有不同功能的多进程池

发布于 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 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    要传递不同的功能,您可以简单地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]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看