Код: Выделить всё
import asyncio
async def run_test():
print("run1")
await asyncio.sleep(1)
print("run2")
async def main():
print("main1")
loop = asyncio.get_event_loop()
task = loop.create_task(run_test())
#task = asyncio.create_task(run_test())
#task = asyncio.ensure_future(run_test())
print("main2")
print("________________")
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
print("________________")
Код: Выделить всё
________________
main1
main2
________________
Код: Выделить всё
________________
main1
main2
run1
________________
< /code>
И если я удаляю async.sleep () в run_test (), это становится таким: < /p>
________________
main1
main2
run1
run2
________________
#task = asyncio.create_task(run_test())
#task = asyncio.ensure_future(run_test())
< /code>
Результат такой же.
3 Вопросы: < /p>
Почему работает run_test (), не будучи не быть ожидается? ) завершает?
Я предполагаю, что цикл событий продолжает выполнять выполняемые задачи после завершения Main () и возврата, когда больше не было выполненных задач. Но этот конфликт с именем "run_until_complete".
Что на самом деле происходит после завершения main ()? < /Li>
< /ol>
Подробнее здесь: https://stackoverflow.com/questions/783 ... reated-but
Мобильная версия