擅长:python、mysql、java
<p>您不需要对生成器进行pickle,只需将生成器的索引发送到处理池</p>
<pre><code>M = len(gens)
N = multiprocessing.cpu_count()
def proc(gen_idx):
return [r for r in gens[gen_idx]()]
if __name__ == "__main__":
with multiprocessing.Pool(N) as p:
for r in p.imap_unordered(proc, range(M)):
print(r)
</code></pre>
<p>请注意,直到在处理函数中,我才调用/初始化生成器</p>
<p>使用<code>imap_unordered</code>将允许您在每个生成器完成时处理结果</p>