Back to questions
Junior — Middle
56
Работали ли вы с группами задач в asyncio для управления асинхронными вызовами?
Answer from AI
sobes.tech AI
В Python asyncio нет встроенного понятия "группы задач" как отдельного объекта, но для управления несколькими асинхронными вызовами часто используют функции asyncio.gather() или asyncio.wait(). Они позволяют запускать и контролировать несколько корутин одновременно.
Например, чтобы запустить несколько задач и дождаться их завершения:
import asyncio
async def task(id):
await asyncio.sleep(1)
return f"Task {id} done"
async def main():
tasks = [task(i) for i in range(5)]
results = await asyncio.gather(*tasks)
print(results)
asyncio.run(main())
Если под "группами задач" подразумевается управление набором задач, то можно использовать asyncio.TaskGroup (начиная с Python 3.11), который упрощает создание и управление группой задач:
import asyncio
async def task(id):
await asyncio.sleep(1)
print(f"Task {id} done")
async def main():
async with asyncio.TaskGroup() as tg:
for i in range(5):
tg.create_task(task(i))
asyncio.run(main())
Таким образом, TaskGroup помогает удобно управлять жизненным циклом группы асинхронных задач.