@Andrei1penguin1

Как вызвать несколько асинхронных функций в python?

Доброго времени суток, нет большого опыта в асинхронном программировании и мне не очень понятна одна вещь:
Допустим у нас есть код, выполняющий одну асинхронную функцию:
import aiohttp
import asyncio

async def yandex_eda():
    data = {
        "key": "value"
    }
    async with aiohttp.ClientSession() as session:
        async with session.post("https://google.com", data=data) as response:
            pass

run = asyncio.get_event_loop()
run.run_until_complete(yandex_eda())

И запуск идет только одной функции, но если допустим у меня есть несколько функций, которые я хочу запустить, как в этом случае вызвать все нужные функции, передавать просто вызываемые функции в run.run_until_complete(def1, def2 ...), или нет?
  • Вопрос задан
  • 701 просмотр
Решения вопроса 1
@AlexBoss
Все есть в офф документации. Есть различные ожидания.
import asyncio

async def factorial(name, number):
    f = 1
    for i in range(2, number + 1):
        print(f"Task {name}: Compute factorial({i})...")
        await asyncio.sleep(1)
        f *= i
    print(f"Task {name}: factorial({number}) = {f}")

async def main():
    # Schedule three calls *concurrently*:
    await asyncio.gather(
        factorial("A", 2),
        factorial("B", 3),
        factorial("C", 4),
    )

asyncio.run(main())


В gather можешь использовать формат gather(*[func(param) for param in params])

https://docs.python.org/3/library/asyncio-task.html
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы