我试图了解使用map
与multiprocessing
。我为此写了下面的python程序。但结果似乎让我困惑。顺序处理比池处理更快
from multiprocessing import Pool
import time
def f(x):
return x*x
if __name__ == '__main__':
p = Pool(5)
l = [x for x in range(2000000)]
start = time.clock()
p.map(f, l)
end = time.clock()
print('pool processing time {}'.format(end - start))
start = time.clock()
map(f, l)
end = time.clock()
print('sequential processing time {}'.format(end - start))
我得到的输出如下。
pool processing time 5.576627
sequential processing time 3.220387
为什么顺序处理时间大于池处理时间?我在Linux(Ubuntu 14.04 VM)上运行这个代码,该代码有两个CPU分配给它。
[multiprocessing.Pool()慢于仅使用普通函数的可能的重复](http://stackoverflow.com/questions/20727375/multiprocessing-pool-slower-than-just-using-ordinary-functions) – ppperry