[英]Why the multiprocessing.Pool.map hangs with my custom partial function?
我制作了一个自定义的部分函数,如下所示:
(Python 3.6.5 | Anaconda自定义(64位)|(默认,2018年3月29日,13:32:41)[MSC v.1900 64位(AMD64)])
In [1]: class SecPartialF(object):
...: def __init__(self, func, arg1):
...: self.func, self.arg1 = func, arg1
...: def __call__(self, arg2):
...: return self.func(self.arg1, arg2)
...:
它适用于buildin map
:
In [2]: def f(x, y):
...: print(x, y)
...: return x + y
In [3]: list(map(SecPartialF(f, 10), range(10)))
10 0
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 8
10 9
Out[3]: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
但是,它不适用于多处理。 pool.map
挂起并且没有任何输出:
In [4]: from multiprocessing import Pool
In [5]: with Pool(4) as pool:
...: list(pool.map(SecPartialF(f, 10), range(10)))
...:
我的自定义部分功能有什么问题?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.