30

の返されたイテレータからの結果の順序imap_unorderedは任意であり、(次のコードで確認します) よりも高速に実行されないように見えますがimap、なぜこのメソッドを使用するのでしょうか?

from multiprocessing import Pool
import time

def square(i):
    time.sleep(0.01)
    return i ** 2

p = Pool(4)
nums = range(50)

start = time.time()
print 'Using imap'
for i in p.imap(square, nums):
    pass
print 'Time elapsed: %s' % (time.time() - start)

start = time.time()
print 'Using imap_unordered'
for i in p.imap_unordered(square, nums):
    pass
print 'Time elapsed: %s' % (time.time() - start)
4

2 に答える 2

10

imap_unordered は、imap よりも時間の経過とともに使用するメモリが少ないようです。少なくとも、何百万ものイテレータで私が経験したことです。

于 2014-09-03T01:04:35.863 に答える