title: multiprocessing.Pool: What's the difference between map_async and imap?
body: <p>I'm trying to learn how to use Python's <code>multiprocessing</code> package, but I don't understand the difference between <code>map_async</code> and <code>imap</code>.
  I noticed that both <code>map_async</code> and <code>imap</code> are executed asynchronously. So when should I use one over the other? And how should I retrieve the result returned by <code>map_async</code>?</p>
  
  <p>Should I use something like this?</p>
  
  <pre><code>def test():
      result = pool.map_async()
      pool.close()
      pool.join()
      return result.get()
  
  result=test()
  for i in result:
      print i
  </code></pre>