擅长:python、mysql、java
<p>我认为<code>multiprocessing</code>更适合于您希望外包的工作是在python中完成的,而不是完全不同的过程。这一切都是关于使用<code>fork</code>并将内容从python进程传递到python进程,所以我认为它不适合您。在</p>
<p>在当前的实现中,一旦生成了最大数量的子进程,您的代码将阻止新子进程的生成,直到当前的一批进程完成为止,因为<code>Popen.wait()</code>将阻塞,直到特定的</em>子进程完成。在</p>
<p>我想你想要的是<a href="http://docs.python.org/dev/library/os.html#os.wait" rel="nofollow">^{<cd4>}</a>。我做了一件<a href="https://gitorious.org/rpatterson-splitpipe/rpatterson-splitpipe/blobs/master/rpatterson/splitpipe/__init__.py#line74" rel="nofollow">very similar</a>的事情,通过保持由pid映射的<code>subprocess.Popen</code>实例的映射。只需启动最大数量的子进程,然后让<code>os.wait()</code>告诉您其中一个进程何时完成。<code>os.wait()</code>将为您提供<code>Popen</code>实例下一步完成的任何pid,您可以使用该pid对<em>该</em>子进程执行任何剩余的清理。然后让代码启动下一个子进程。在</p>