title: Python threads all executing on a single core
body: <p>I have a Python program that spawns many threads, runs 4 at a time, and each performs an expensive operation. Pseudocode:</p>
  
  <pre><code>for object in list:
      t = Thread(target=process, args=(object))
      # if fewer than 4 threads are currently running, t.start(). Otherwise, add t to queue
  </code></pre>
  
  <p>But when the program is run, Activity Monitor in OS X shows that 1 of the 4 logical cores is at 100% and the others are at nearly 0. Obviously I can't force the OS to do anything but I've never had to pay attention to performance in multi-threaded code like this before so I was wondering if I'm just missing or misunderstanding something.</p>
  
  <p>Thanks.</p>