ThreapPool.map但不支持map不支持的操作数类型异常?

时间:2010-12-17 21:35:55

标签: python multithreading threadpool

为什么内置地图有效但多处理的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对应于第二个等等。抛出异常是因为我给它的列表被解释为块大小或其他整数位置参数。

无论如何,我们将不胜感激。

1 个答案:

答案 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)]