Назад к вопросам
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") в список.