我正在尝试学习如何使用multiprocessing,并找到了以下示例。
我想按以下方式对值进行求和:
from multiprocessing import Pool
from time import time
N = 10
K = 50
w = 0
def CostlyFunction(z):
r = 0
for k in xrange(1, K+2):
r += z ** (1 / k**1.5)
print r
w += r
return r
currtime = time()
po = Pool()
for i in xrange(N):
po.apply_async(CostlyFunction,(i,))
po.close()
po.join()
print w
print '2: parallel: time elapsed:', time() - currtime
我无法获得所有r值的总和。
pool.imap
或pool.imap_unordered
,您可以直接将其放入sum函数中,像这样:sum(pool.imap_unordered(CostlyFunction,((i,) for i in xrange(N))))
。 - Björn Pollex