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
清理剩余的任务。注意:它是在普通函数中调用的,而不是在协同程序中调用的。我不知道另一个用例。这就是我所问的:)