为什么内置地图有效但多处理的ThreadPool地图不起作用?
from multiprocessing.pool import ThreadPool
def identity(a, b): return (a, b)
map(identity, [1, 2, 3], [4, 5, 6])
p = ThreadPool(2)
#gives above error:
p.map(identity, [1, 2, 3], [4, 5, 6])
编辑: 经过一些挖掘,显然线程池的地图不支持vararg风格的地图,即map(f,i1,i2,i3,... in),其中i1对应于f的第一个参数,i2对应于第二个等等。抛出异常是因为我给它的列表被解释为块大小或其他整数位置参数。
无论如何,我们将不胜感激。
答案 0 :(得分:1)
from multiprocessing.pool import ThreadPool
def identity((a,b)): return a, b
print map(identity, zip([1, 2, 3], [4, 5, 6]))
p = ThreadPool(2)
#gives above error:
print p.map(identity, zip([1, 2, 3], [4, 5, 6]))
[(1, 4), (2, 5), (3, 6)]
[(1, 4), (2, 5), (3, 6)]