Асинхронный параллелизм Python в асинхронной функции

#python #asynchronous #async-await #python-asyncio

Вопрос:

Как я могу изменить этот код для запуска on_some_event g() вместо f() ?

 def f(data):
    pass
async def g(data):
    pass

async def on_some_event(data):
    for i in data:
        threads.append(threading.Thread(target=f, args=(i,)))
        threads[-1].start()
    for i in threads:
        i.join()
 

Что я должен использовать для одновременного выполнения асинхронных функций в асинхронной функции ?

Ответ №1:

Чтобы запустить async функцию (сопрограмму), вы должны вызвать ее с помощью цикла событий.

Циклы событий:

Цикл событий можно рассматривать как функции для выполнения асинхронных задач и обратных вызовов, выполнения операций сетевого ввода-вывода и запуска подпроцессов.

например, Пример цикла событий для запуска async функции для запуска одной асинхронной функции:

 import asyncio

loop = asyncio.get_event_loop()
loop.run_until_complete(on_some_event('hello'))
loop.close()