Python 3.4多处理递归Pool.map()

发布于 2021-01-29 14:56:37

我正在Ubuntu 14.04上使用Python 3.4进行开发。我试图做递归Pool.map()。在我调用之后g(),它挂在那里并且永远不会返回。

import multiprocessing as mp

pool = mp.Pool()

def d(x):
    return x / 2.0


def f(x):
    w = pool.map(d, x)
    return w

def g():
    v = pool.map(f, [[1, 2], [3, 4]])

    print(v)
关注者
0
被浏览
98
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是不可能的。所述Pool对象本身不能安全进程之间被共享,所以相同的池不能在两者中使用fg。即使您 可以
    执行此操作,也很快会导致挂起,因为您的池仅限于cpu_count()并发工作程序。一旦开始递归地创建更多的工作人员,您最终将获得比cpu_count()工作人员更多的工作量,这将永远无法完成。正在运行的工作人员将等待池中排队的任务,但是排队的任务将永远无法启动,因为正在运行的任务正在等待。因此,您最终陷入僵局。简而言之:不要尝试这样做。



知识点
面圈网VIP题库

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

去下载看看