Как запустить две функции параллельно в asyncio?

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

Вот пример кода, демонстрирующий, как запустить две функции параллельно с помощью asyncio:

import asyncio

# Определяем две асинхронные функции
async def function_1():
    # Логика первой функции
    await asyncio.sleep(2)
    print('Функция 1 завершилась')

async def function_2():
    # Логика второй функции
    await asyncio.sleep(1)
    print('Функция 2 завершилась')

# Создаем событийный цикл
loop = asyncio.get_event_loop()

# Запускаем функции параллельно
tasks = asyncio.gather(function_1(), function_2())
loop.run_until_complete(tasks)

# Закрываем цикл
loop.close()

В этом примере мы сначала определяем две асинхронные функции function_1() и function_2(). Затем мы создаем событийный цикл с помощью asyncio.get_event_loop(). Далее мы используем функцию asyncio.gather() для выполнения двух задач параллельно. Функция gather() принимает список асинхронных функций или корутин в качестве аргументов и возвращает объект Task, который представляет собой группу задач, которые можно выполнить параллельно. Затем мы используем метод run_until_complete() объекта цикла, чтобы выполнить задачи. Наконец, мы закрываем цикл с помощью метода close().

При запуске кода вышеприведенного примера вы увидите, что обе функции выполняются параллельно, с задержкой 2 секунды в функции function_1() и задержкой 1 секунду в функции function_2().