Почему asyncio.run() илиloop.run_until_complete() запускает задачу, которая создана, но не ожидается?Python

Программы на Python
Ответить
Anonymous
 Почему asyncio.run() илиloop.run_until_complete() запускает задачу, которая создана, но не ожидается?

Сообщение Anonymous »

Вот код. < /p>

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»