Встречается на собеседованиях • сегодня

В чем разница между TaskGroup и gather в asyncio

TaskGroup (появился в Python 3.11) и gather служат для запуска нескольких корутин одновременно, но имеют ключевые отличия:

  1. Обработка ошибок:
    • TaskGroup автоматически отменяет все задачи при первой ошибке (как asyncio.wait(return_when=FIRST_EXCEPTION))
    • gather по умолчанию ждёт завершения всех задач (можно изменить через return_exceptions=True)
  1. Контекст:

    • TaskGroup работает как контекстный менеджер (async with)
    • gather — обычная функция
  2. Добавление задач:

    • В TaskGroup задачи добавляются динамически через create_task()
    • gather принимает готовый список корутин

Пример:

python
# TaskGroup
async with asyncio.TaskGroup() as tg:
    tg.create_task(coro1())
    tg.create_task(coro2())  # При ошибке в coro1 все отменится

# gather
await asyncio.gather(coro1(), coro2())  # Обе выполнятся до конца

TaskGroup предпочтительнее для сложных сценариев с зависимыми задачами, gather — для простого параллельного выполнения.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы