Я немного новичок в asyncio в python. Я пытался запустить этот простой код, но я не знаю, почему я получаю этот неожиданный вывод.
Что я сделал, так это то, что в функции outer
я создал асин c задач и сохранил их в массиве tasks
. Прежде чем ждать выполнения этих задач, я написал оператор печати print("outer")
, который должен выполняться на каждой итерации. А внутри задачи я написал еще одно выражение print print("inner")
в функции inner
. Но каким-то образом я получаю неожиданный вывод.
Вот код -
import asyncio
def main():
loop = asyncio.get_event_loop()
loop.run_until_complete(outer(loop))
loop.close()
async def outer(loop):
tasks = []
for i in range(0, 5):
tasks.append(loop.create_task(inner()))
for task in tasks:
print("outer")
await task
async def inner():
print("inner")
await asyncio.sleep(0.5)
if __name__ == '__main__':
main()
Вот вывод -
outer
inner
inner
inner
inner
inner
outer
outer
outer
outer
Мой ожидаемый вывод -
outer
inner
outer
inner
outer
inner
outer
inner
outer
inner
Почему все inner
печатают до outer
. Каков правильный ход выполнения asyncio. Заранее спасибо.