Python. Asyncio - порядок завершения работы корутин
Такой код
import asyncio
import time
async def nested():
print(f' start nested {int(time.time()-t0)}')
await asyncio.sleep(2)
print(f' finsih nested {int(time.time()-t0)}')
async def main():
print(f'start main {int(time.time()-t0)}')
task = asyncio.create_task(nested())
await asyncio.sleep(1)
await task
print(f'finish main {int(time.time()-t0)}')
t0=time.time()
asyncio.run(main())
Ожидаю, что корутина main завершится раньше, чем nested. На деле результат такой
start main 0
start nested 0
finsih nested 2
finish main 2
Можно ли написать код, чтобы main завершилась раньше, чем nested ?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Вы же явным образом ждёте завершения nested при помощи await task. Если убрать эту строку, то всё работает как вы хотите, я пробовал в Google Colab (хотя там нужно кое-что подкручивать в asyncio, так просто код не работает):
start main 0
start nested 0
finish main 1
finsih nested 2