Назад к вопросам
Middle+
68
questionbank

Что такое функция gather()?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

asyncio.gather() объединяет результаты выполнения нескольких асинхронных объектов (корутин, задач) и возвращает итератор или один результат после завершения всех объектов. Это полезно для параллельного выполнения независимых асинхронных операций.

Ключевые особенности:

  • Одновременное выполнение: Запускает все переданные объекты одновременно.
  • Сохранение порядка: Порядок результатов соответствует порядку переданных объектов.
  • Обработка исключений: По умолчанию, если любой из объектов вызывает исключение, gather() его распространяет. Параметр return_exceptions=True позволяет собрать исключения в список результатов вместо прекращения выполнения.
  • Типы входных данных: Принимает iterable (список, кортеж и т.д.) асинхронных объектов.

Применение:

  • Параллельная загрузка данных с разных источников.
  • Выполнение нескольких независимых сетевых запросов.
  • Обработка нескольких задач, которые могут выполняться одновременно.
import asyncio

async def task1():
    await asyncio.sleep(1)
    return "Результат 1"

async def task2():
    await asyncio.sleep(2)
    return "Результат 2"

async def main():
    results = await asyncio.gather(task1(), task2())
    print(results) # Выведет ['Результат 1', 'Результат 2']

asyncio.run(main())