title: Python multiprocessing.Queue vs multiprocessing.manager().Queue()
body: <p>I have a simple task like that:</p>
  
  <pre><code>def worker(queue):
      while True:
          try:
              _ = queue.get_nowait()
          except Queue.Empty:
              break
  
  if __name__ == '__main__':
      manager = multiprocessing.Manager()
      # queue = multiprocessing.Queue()
      queue = manager.Queue()
  
      for i in range(5):
          queue.put(i)
  
      processes = []
  
      for i in range(2):
          proc = multiprocessing.Process(target=worker, args=(queue,))
          processes.append(proc)
          proc.start()
  
      for proc in processes:
          proc.join()
  </code></pre>
  
  <p>It seems that multiprocessing.Queue can do all work that i needed, but on the other hand I see many examples of manager().Queue() and can't understand what I really need. Looks like Manager().Queue() use some sort of proxy objects, but I doesn't understand those purpose, because multiprocessing.Queue() do the same work without any proxy objects.</p>
  
  <p>So, my questions is:</p>
  
  <p>1) What really difference between multiprocessing.Queue and object returned by multiprocessing.manager().Queue()?</p>
  
  <p>2) What do I need to use?</p>