Python Glossary English

Python 3.4+Асинхронное программированиефункция

asyncio.gather()

параллельность

Запускает несколько корутин конкурентно и ждёт завершения всех. Возвращает список результатов.

Синтаксис

results = await asyncio.gather(coro1, coro2, ...)

Результаты приходят в порядке аргументов, а не в порядке завершения. По умолчанию (return_exceptions=False) первая же ошибка сразу пробрасывается наружу, но остальные корутины при этом не отменяются и продолжают крутиться в фоне — отсюда висящие задачи и жалобы при выходе; с return_exceptions=True исключения просто лягут в список результатов на своих местах. В Python 3.11+ для группы задач с внятной отменой обычно удобнее asyncio.TaskGroup.

Примеры

import asyncio
async def fetch(n):
    await asyncio.sleep(0)
    return n ** 2
async def main():
    res = await asyncio.gather(fetch(2), fetch(3), fetch(4))
    print(res)  # → [4, 9, 16] — порядок аргументов, а не завершения
asyncio.run(main())

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности