<p>不,不可能。在<a href="http://hg.python.org/releasing/3.4/file/464c22bf9fe1/Lib/multiprocessing/process.py#l97" rel="nofollow">^{<cd1>}</a>中有一个特定的防范措施。在</p>
<p>我只能推测为什么它不可重用,但我认为这是一个设计选择。它可能会给类添加太多的逻辑来回收对象,这是值得的。但我觉得更有趣的是,问为什么会这样。在</p>
<p>不过,在阅读了过去20分钟的源代码之后,我可以肯定地说,仅仅创建整个python进程的一个分支,比创建一个对象的新实例要花更多的时间,所以从性能上讲,这一点都不重要。在</p>
<p>至于您的代码,您可以稍微压缩一下,您不必使用命名的<code>Process</code>实例,并利用列表理解。在</p>
<pre><code># setup the jobs and run
result_queue = multiprocessing.Queue()
mcmc_list = [MCMC(options, donors, clusters)]*4
jobs = [Process(result_queue, mcmc) for mcmc in mcmc_list ]
for job in jobs:
#job.debug_level = 1
job.start()
results = [result_queue.get() for job in jobs]
#for res in results: res.traceplot(show=False)
jobs2 = [Process(result_queue, result) for result in results]
for j in jobs2:
j.start()
results2 = [result_queue.get() for job in jobs2]
</code></pre>
<p>编辑:
我也认为你有点误用<code>Queue</code>这是为了在进程之间进行通信,我想你不需要它。要创建线程池,应该使用<a href="https://docs.python.org/dev/library/multiprocessing.html#module-multiprocessing.pool" rel="nofollow">^{<cd4>}</a>和<code>Pool.map</code>。但是我不能给出确切的代码示例,没有看到原始的目标函数。我认为这需要调整。在</p>