擅长:python、mysql、java
<p>让池处理调度:</p>
<pre><code>for result in pool.imap(process_single_line, input_stream):
pass
</code></pre>
<p>如果顺序无关紧要:</p>
^{pr2}$
<p><code>pool.*map*()</code>函数具有<code>chunksize</code>参数,您可以更改该参数以查看它是否影响您的案例中的性能。在</p>
<p>如果代码期望在一个调用中传递多行:</p>
<pre><code>from itertools import izip_longest
chunks = izip_longest(*[iter(inputStream)]*5000, fillvalue='') # grouper recipe
for result in pool.imap(process_lines, chunks):
pass
</code></pre>
<p>限制排队项目数的一些替代方法是:</p>
<ul>
<li><code>multiprocessing.Queue</code>设置最大大小(在这种情况下不需要池)。<code>queue.put()</code>将在达到最大大小时阻塞,直到其他进程调用<code>queue.get()</code></li>
<li>使用多处理原语(如条件或绑定信号量)手动实现生产者/消费者模式。在</li>
</ul>
<p>注意:每个值都有关联的锁,不需要单独的锁。在</p>