Встречается на собеседованиях • сегодня
В чем разница между TaskGroup и gather в asyncio
TaskGroup (появился в Python 3.11) и gather служат для запуска нескольких корутин одновременно, но имеют ключевые отличия:
- Обработка ошибок:
TaskGroupавтоматически отменяет все задачи при первой ошибке (какasyncio.wait(return_when=FIRST_EXCEPTION))gatherпо умолчанию ждёт завершения всех задач (можно изменить черезreturn_exceptions=True)
-
Контекст:
TaskGroupработает как контекстный менеджер (async with)gather— обычная функция
-
Добавление задач:
- В
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 — для простого параллельного выполнения.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы