title: Multiprocessing in Python slower than without
body: <p>I'm using python 3.3 on a computer with 2 cores but 4 threads.  I am trying to learn to use multiprocessing to speed up code, but when using it my code slows down.</p>
  
  <p>To start my learning, I have made a small program:</p>
  
  <pre><code>from multiprocessing import Process
  import time
  
  def f():
      s = 0
      for i in range(2*10**7):
          s += i
      return s
  
  if __name__ == '__main__':
      t = time.time()
      p1 = Process(target = f)
      p2 = Process(target = f)
      p3 = Process(target = f)
      p4 = Process(target = f)
      p1.start()
      p2.start()
      p3.start()
      p4.start()
      p1.join()
      p2.join()
      p3.join()
      p4.join()
      print (time.time()-t)
  
  t2 = time.time()
  for a in range(4):
      f()
  print(time.time()-t2)
  </code></pre>
  
  <p>Average of 3 runs, the first part with multiprocessing takes 17.15 sec, while the second part without multiprocessing takes 6.24 sec.  Using the Windows Task Manager, I see that my computer is indeed using 100% CPU for the first part and only 25% for the second part, and also that I am not running out of memory.</p>
  
  <p>Why is this program so much slower with multiprocessing?</p>