擅长:python、mysql、java
<p>从期望的输出来看,目标似乎是保持单个迭代的原样(即按顺序运行<code>first</code>和<code>second</code>),但同时并行执行这两个循环迭代。</p>
<p>假设您只想修改<code>main()</code>,可以这样实现:</p>
<pre><code>async def main():
async def one_iteration():
result = await first()
print(result)
result2 = await second()
print(result2)
coros = [one_iteration() for _ in range(2)]
await asyncio.gather(*coros)
</code></pre>
<p>上面没有按顺序迭代,而是为每个迭代任务创建一个协程,并使用<a href="https://docs.python.org/3/library/asyncio-task.html#asyncio.gather" rel="noreferrer">^{<cd4>}</a>并行执行所有迭代。</p>
<p>注意,仅仅创建一个协程并不能开始执行它,因此大量的<code>coros</code>不会阻塞事件循环。</p>