title: Do multiprocessing pools give every process the same number of tasks, or are they assigned as available?
body: <p>When you <code>map</code> an iterable to a <code>multiprocessing.Pool</code> are the iterations divided into a queue for each process in the pool at the start, or is there a common queue from which a task is taken when a process comes free?</p>
  
  <pre><code>    def generate_stuff():
          for foo in range(100):
               yield foo
  
      def process(moo):
          print moo
  
      pool = multiprocessing.Pool()
      pool.map(func=process, iterable=generate_stuff())
      pool.close()
  </code></pre>
  
  <p>So given this untested suggestion code; if there are 4 processes in the pool does each process get allocated 25 stuffs to do, or do the 100 stuffs get picked off one by one by processes looking for stuff to do so that each process might do a different number of stuffs, eg 30, 26, 24, 20.</p>