title: Python 3: create new process when another one finishes
body: <p>I have an array of data to handle and handler that executing long (1-2 minutes) and takes a lot of memory for its calculations.</p>
  
  <pre><code>raw = ['a', 'b', 'c']
  
  def handler():
      # do something long
  </code></pre>
  
  <p>Since handler requires a lot of memory, I want to execute it in separate subprocess and kill it after execution to release memory. Something like the following snippet:</p>
  
  <pre><code>from multiprocessing import Process
  for r in raw:
      process = Process(target=handler, args=(r))
      process.start()
  </code></pre>
  
  <p>The problem is that such approach leads to immediate running <code>len(raw)</code> processes. And it's not good.
  Also, it's not needed to interchange any kind of data between subprocesses. Just run them consequently.
  Therefore it would be great to run a few processes at the same time and add a new one once existing finishes.</p>
  
  <p>How could it be implemented (if it's even possible)?</p>