函数是否会使用 asyncio.gather(create_task(task)) 运行两次

问题描述 投票:0回答:1

如果我跑步会发生什么:

tasks = []
for item in items:
  tasks.append(asyncio.create_task(f(item)))

res = asyncio.gather(*tasks)

函数会运行两次吗?

create_task
之后和
gather

之后
python asynchronous python-asyncio
1个回答
1
投票

首先,请注意,您必须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
© www.soinside.com 2019 - 2024. All rights reserved.