Python - Не работает asyncio: функции не работают асинхронно
Не работает asyncio. Функции выполняются без ошибок, но они не асинхронные. Всё делал по гайду. Вот код:
import asyncio
async def a():
await asyncio.sleep(1)
print("a")
async def b():
await asyncio.sleep(1)
print("b")
asyncio.run(a())
asyncio.run(b())
Вот ещё пример кода, в этот раз просто скопировал из документации:
import asyncio
async def main():
print('Hello ...')
await asyncio.sleep(1)
print('... World!')
async def main2():
print('Hello ...')
await asyncio.sleep(2)
print('... World!')
asyncio.run(main())
asyncio.run(main2())
Он тоже не работает (тоже без ошибок, но асинхронность не работает)
Ответы (1 шт):
В документации есть примеры. А как у вас примеров там всё же нет. Не надо два раза использовать asyncio.run. Создается одна main и внутри нее запускаются две асинхронные функции. И только эту main запускают с помощью run. Один из способов запустить конкурентно функции - использовать asyncio.gather. В этом случае будет дожидаться выполнение обеих запущенных конкурентно функций.
import asyncio
import time
async def say_after(delay, what):
print("before")
await asyncio.sleep(delay)
print(what)
async def main():
print(f"started at {time.strftime('%X')}")
await asyncio.gather(say_after(1, 'hello'),say_after(2,'world'))
print(f"finished at {time.strftime('%X')}")
asyncio.run(main())
https://docs.python.org/3/library/asyncio-task.html#coroutines