擅长:python、mysql、java
<h2>简单的回答</h2>
<p>似乎您希望在<code>for</code>循环的每次迭代中使用一个进程池。对于使用<code>Pool.map</code>,您已经使事情变得更加复杂,但是您对<code>.join()</code>和{<cd4>}的调用表明您宁愿使用<code>Pool.map_async</code>。下面是一个简单的例子:</p>
<pre><code>import numpy as np
from multiprocessing import Pool
from time import sleep
def print_square(x):
sleep(.01)
print x**2
if __name__=='__main__':
for k in range(10):
pool = Pool(3)
arb = np.arange(0,10)
pool.map_async(print_square,arb)
pool.close()
pool.join()
</code></pre>
<h2>一般性意见</h2>
<ol>
<li><p>通常应该包括一个<a href="https://stackoverflow.com/help/mcve">minimal, complete, verifiable example</a>。无法运行您的示例。更糟糕的是,它包含了大量无关的特定于域的代码(例如<code>P</code>,<code>V</code>,<code>Dynamics</code>),这些代码阻碍了其他人尝试运行您的示例。</p></li>
<li><p>说明代码的观察行为(例如错误的输出、运行时错误等)和期望的行为。</p></li>
<li><p>将<code>Pool</code>作为<code>ThreadPool</code>导入是令人困惑的,因为线程和进程是<a href="https://stackoverflow.com/questions/200469/what-is-the-difference-between-a-process-and-a-thread">different</a>,但它们有非常相似的api。</p></li>
</ol>