Назад к вопросам
Middle+
134
questionbank
Что такое функция gather()?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
asyncio.gather() — это функция из модуля asyncio, которая позволяет выполнить несколько awaitable-объектов (например, корутины) параллельно и собрать их результаты.
Основные особенности:
- Параллельное выполнение: Заданные корутины запускаются одновременно.
- Ожидание завершения:
gather()ждет завершения всех переданных корутин. - Сбор результатов: Результаты выполнения корутин возвращаются в виде списка в том же порядке, в котором они были переданы в
gather(). - Обработка исключений: По умолчанию, если одна из корутин вызывает исключение,
gather()отменяет остальные незавершенные корутины и перевыбрасывает исключение. Поведение можно изменить с помощью параметраreturn_exceptions=True.
Пример использования:
import asyncio
async def task_sleep(name, delay):
# Корутина, имитирующая работу
print(f"Task {name}: Starting...")
await asyncio.sleep(delay)
print(f"Task {name}: Finished")
return f"Result from {name}"
async def main():
# Запуск двух корутин параллельно
results = await asyncio.gather(
task_sleep("A", 2),
task_sleep("B", 1)
)
# Вывод результатов
print(f"Gather results: {results}")
# Запуск главной корутины
if __name__ == "__main__":
asyncio.run(main())
В данном примере task_sleep("A", 2) и task_sleep("B", 1) запускаются практически одновременно. gather() ожидает их завершения и собирает их возвращаемые значения ("Result from A", "Result from B") в список.