Dans quelle situation nous avons besoin d'utiliser les " multiprocessing.Piscine.imap_unordered`?

L'ordre des résultats de l'itérateur renvoyé de imap_unordered est arbitraire, et il ne semble pas fonctionner plus vite que imap(qui je vérifie avec le code suivant), alors pourquoi serait-on utiliser cette méthode?

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)
  • Dans cet exemple, la différence entre la quantité de temps nécessaire pour 0**2 n'est pas différent de 49**2. Je me demandais ce qui se passerait si certains calcul prend beaucoup plus de temps que les autres. Va imap_unordered être le plus rapide dans ce cas?
  • Je pense que oui.
InformationsquelleAutor satoru | 2013-09-28