Python 如何等待集合的任务组?
我有那个密码Python 如何等待集合的任务组?,python,asynchronous,python-asyncio,Python,Asynchronous,Python Asyncio,我有那个密码 import asyncio async def f(): await asyncio.sleep(0.1) print('done') async def main(): asyncio.create_task(f()) asyncio.create_task(f()) pending = asyncio.all_tasks() group = asyncio.gather(*pending, return_exc
import asyncio
async def f():
await asyncio.sleep(0.1)
print('done')
async def main():
asyncio.create_task(f())
asyncio.create_task(f())
pending = asyncio.all_tasks()
group = asyncio.gather(*pending, return_exceptions=True)
await group
asyncio.run(main())
我不知道为什么它能永远工作。我想在小组的所有任务完成后结束这个项目
Python 3.9
编辑:好的。。。我有
all_tasks
不仅为我提供由我创建的任务。所有任务
没有“主任务”时是否有任何等价物?main
也是协同程序,在main
内部等待main
将永远不会结束
{
<Task pending name='Task-2' coro=<f() running at /tmp/t.py:3>>,
<Task pending name='Task-1' coro=<main() running at /tmp/t.py:11> cb=[_run_until_complete_cb() at /home/falsetru/.pyenv/versions/3.9.4/lib/python3.9/asyncio/base_events.py:184]>,
<Task pending name='Task-3' coro=<f() running at /tmp/t.py:3>>
}
那么,在Inde run中使用“所有任务”方法有什么好的理由吗?@PiotrWasilewicz,您可以调用所有任务,但等待所有任务将导致阻塞,因为尝试调用协程来等待它自己,这永远不会结束。有没有理由不明确列出等待什么?这不是我问题的答案。我知道我可以称之为“所有任务”(我做到了)。我问是否有什么好的理由。@PiotrWasilewicz,它用于
asyncio.run
清理剩余的任务。注意:它是在普通函数中调用的,而不是在协同程序中调用的。我不知道另一个用例。这就是我所问的:)