擅长:python、mysql、java
<p>您可以批量处理任务,其大小等于您仍然需要的结果数。如果您将这样的批处理交给<code>asyncio.gather()</code>,它将同时运行它们并保持结果的顺序。例如:</p>
<pre><code>async def process(tasks, num):
results = []
task_iter = iter(tasks)
while len(results) < num:
next_batch = tuple(itertools.islice(task_iter, num - len(results)))
if len(next_batch) == 0:
break
batch_results = await asyncio.gather(*next_batch)
results.extend(r for r in batch_results if r == 'foo')
</code></pre>