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Сообщить о неточности