title: multiprocessing.apply_async does not actually start when passed a queue.Queue object
body: <p>I am really frustrated.  Why doesn't Python's multiprocessing.apply_async() actually START the process when a queue object is passed as an argument or a part of an argument?</p>
  
  <p>This code works as expected:</p>
  
  <pre><code>#! /usr/bin/env python3
  
  import multiprocessing
  import queue
  import time
  
  def worker(var):
      while True:
          print("Worker {}".format(var))
          time.sleep(2)
  
  pool = multiprocessing.Pool(20)
  m = multiprocessing.Manager()
  q = queue.Queue()
  
  for i in range(20):
      pool.apply_async(worker, (i,))
  
  print("kicked off workers")
  pool.close()
  pool.join()
  </code></pre>
  
  <p>But just by passing queue <code>q</code>, nothing happens when you run it now:</p>
  
  <pre><code>#! /usr/bin/env python3
  
  import multiprocessing
  import queue
  import time
  
  def worker(var,q):
      while True:
          print("Worker {}".format(var))
          time.sleep(2)
  
  pool = multiprocessing.Pool(20)
  m = multiprocessing.Manager()
  q = queue.Queue()
  
  for i in range(20):
      pool.apply_async(worker, (i,q))
  
  print("kicked off workers")
  pool.close()
  pool.join()
  </code></pre>
  
  <p>Again; super frustrating.  What the hell is going on?  What am I doing wrong?</p>