title: Python multiprocessing is taking much longer than single processing
body: <p>I am performing some large computations on 3 different numpy 2D arrays sequentially. The arrays are huge, 25000x25000 each. Each computation takes significant time so I decided to run 3 of them in parallel on 3 CPU cores on the server. I am following standard multiprocessing guideline and creating 2 processes and a worker function. Two computations are running through the 2 processes and the third one is running locally without separate process. I am passing the huge arrays as arguments of the processes like :</p>
  
  <pre><code>p1 = Process(target = Worker, args = (queue1, array1, ...)) # Some other params also going
  
  p2 = Process(target = Worker, args = (queue2, array2, ...)) # Some other params also going
  </code></pre>
  
  <p>the Worker function sends back two numpy vectors (1D array) in a list appended in the queue like:</p>
  
  <pre><code>queue.put([v1, v2])
  </code></pre>
  
  <p>I am not using <code>multiprocessing.pool</code></p>
  
  <p>but surprisingly I am not getting speedup, it is actually running 3 times slower. Is passing  large arrays taking time? I am unable to figure out what is going on. Should I use shared memory objects instead of passing arrays?</p>
  
  <p>I shall be thankful if anybody can help.</p>
  
  <p>Thank you.</p>