如果我跑步会发生什么:
tasks = []
for item in items:
tasks.append(asyncio.create_task(f(item)))
res = asyncio.gather(*tasks)
函数会运行两次吗?
create_task
之后和gather
之后
首先,请注意,您必须await
asyncio.gather()
才能真正等待他们完成。
一旦修复,这些函数将仅运行一次。
create_task()
将它们提交到事件循环。之后,他们将在下一个await
期间运行。 asyncio.gather()
只需等待它们完成即可。例如,这将分两个阶段运行它们:
tasks = []
for item in items:
tasks.append(asyncio.create_task(f(item)))
await asyncio.sleep(1) # here they start running and run for a second
res = await asyncio.gather(*tasks) # here we wait for them to complete