title: Sharing a result queue among several processes
body: <p>The documentation for the <code>multiprocessing</code> module shows how to pass a queue to a process started with <code>multiprocessing.Process</code>. But how can I share a queue with asynchronous worker processes started with <code>apply_async</code>? I don't need dynamic joining or anything else, just a way for the workers to (repeatedly) report their results back to base.</p>
  
  <pre><code>import multiprocessing
  def worker(name, que):
      que.put("%d is done" % name)
  
  if __name__ == '__main__':
      pool = multiprocessing.Pool(processes=3)
      q = multiprocessing.Queue()
      workers = pool.apply_async(worker, (33, q))
  </code></pre>
  
  <p>This fails with: 
      <code>RuntimeError: Queue objects should only be shared between processes through inheritance</code>.
  I understand what this means, and I understand the advice to inherit rather than require pickling/unpickling (and all the special Windows restrictions). But how <em>do</em> I pass the queue in a way that works? I can't find an example, and I've tried several alternatives that failed in various ways. Help please?</p>