title: Multiprocessing pool 'apply_async' only seems to call function once
body: <p>I've been following the docs to try to understand multiprocessing pools. I came up with this:</p>
  
  <pre><code>import time
  from multiprocessing import Pool
  
  def f(a):
      print 'f(' + str(a) + ')'
      return True
  
  t = time.time()
  pool = Pool(processes=10)
  result = pool.apply_async(f, (1,))
  print result.get()
  pool.close()
  print ' [i] Time elapsed ' + str(time.time() - t)
  </code></pre>
  
  <p>I'm trying to use 10 processes to evaluate the function <code>f(a)</code>. I've put a print statement in <code>f</code>.</p>
  
  <p>This is the output I'm getting:</p>
  
  <pre><code>$ python pooltest.py 
  f(1)
  True
   [i] Time elapsed 0.0270888805389
  </code></pre>
  
  <p>It appears to me that the function <code>f</code> is only getting evaluated once. </p>
  
  <p>I'm likely not using the right method but the end result I'm looking for is to run <code>f</code> with 10 processes simultaneously, and get the result returned by each one of those process. So I would end with a list of 10 results (which may or may not be identical).</p>
  
  <p>The docs on multiprocessing are quite confusing and it's not trivial to figure out which approach I should be taking and it seems to me that <code>f</code> should be run 10 times in the example I provided above.</p>