title: In what situation do we need to use `multiprocessing.Pool.imap_unordered`?
body: <p>The ordering of results from the returned iterator of <code>imap_unordered</code> is arbitrary, and it doesn't seem to run faster than <code>imap</code>(which I check with the following code), so why would one use this method?</p>
  
  <pre><code>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)
  </code></pre>