title: Do I need to pass multiprocessing queues to the process?
body: <p>The following multiprocessing example works on my Ubuntu machine. It starts a process, sends a parameter via a queue, and receives the result of the computation via another queue:</p>
  
  <pre><code>from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  
  import multiprocessing
  import Queue
  
  
  running = multiprocessing.Value('i', 1)
  request = multiprocessing.Queue(1)
  response = multiprocessing.Queue(1)
  
  def worker():
    while running.value:
      try:
        param = request.get(timeout=0.1)
      except Queue.Empty:
        # To check running flag.
        continue
      # Imagine heavy computation here.
      result = param ** 2
      response.put_nowait(result)
  
  
  def main():
    process = multiprocessing.Process(target=worker)
    process.start()
    request.put_nowait(42)
    result = response.get()
    print('Result', result)
    running.value = 0
    process.join()
  
  
  if __name__ == '__main__':
    main()
  </code></pre>
  
  <p>However, several examples on the web seem to pass all objects needed by the worker via <code>multiprocessing.Process(target=worker, args=(running, request, response)</code>. Is this necessary for any reason, for example platform compatibility?</p>