Sobes.tech
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 помогает удобно управлять жизненным циклом группы асинхронных задач.