asyncio.gather() используется для запуска нескольких корутин одновременно в рамках async event loop. Она планирует выполнение всех переданных корутин одновременно, а не ждёт завершения каждой перед запуском следующей.
results = await asyncio.gather(task1(), task2(), task3())
Все три корутины планируются немедленно и выполняются одновременно. Выражение await приостанавливает выполнение до тех пор, пока все корутины не завершатся.
asyncio.gather() возвращает список результатов в том же порядке, что и входные корутины, независимо от порядка завершения:
results = await asyncio.gather(task1(), task2(), task3())
# results = [result_of_task1, result_of_task2, result_of_task3]
По умолчанию, если одна корутина бросает исключение, оно немедленно пробрасывается и отменяет gather. При return_exceptions=True исключения вместо этого возвращаются как результаты:
results = await asyncio.gather(task1(), task2(), return_exceptions=True)
awaitasyncio.gather() возвращает результаты в порядке их завершения, а не в порядке предоставления корутин.
Новый — ещё не проверен сообществом
Вы