title: apply_async order of results
body: <p>If I understand correctly, apply_async returns immediately with an AsyncResult object. If I collect those objects in the following way, and use get() only after all workers have finished, is it safe to assume the values will be in the order the function was called?</p>
  
  <pre><code>objRes = [None] * len(aRange)
  pool = Pool(processes=8)
  for x in aRange:
      objRes[x] = pool.apply_async(f,(arg1, arg2, arg3,))
  pool.close()
  pool.join()
  
  res = [None] * len(aRange)
  for x in aRange:
      res[x] = objRes[x].get()
  </code></pre>
  
  <p>I started out trying to use pool.map() and pool.starmap() instead, but I have  two arrays as part of the arguments and couldn't figure out how exactly to pass them.</p>