Почему я не могу продолжать отправлять задания в асинхронный цикл ввода-вывода, который был запущен с помощью команды ruPython

Программы на Python
Anonymous
Почему я не могу продолжать отправлять задания в асинхронный цикл ввода-вывода, который был запущен с помощью команды ru

Сообщение Anonymous »

Я пытаюсь смоделировать систему, использующую asyncio и цикл событий. Я обнаружил, что если я создам цикл событий и запущу его с помощью команды «Запустить навсегда», он не будет обрабатывать новые задачи, если только в нем нет незавершенных задач.

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

import asyncio, threading, time
loop = asyncio.new_event_loop()
Это мой цикл, потом я его запускаю

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

thread = threading.Thread( target = loop.run_forever)
thread.start()
На мой взгляд, здесь должен быть работающий цикл событий, и я мог бы отправлять в него новые задачи.

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

async def dostuff( i ):
await asyncio.sleep(5)
print("doing something", i)

loop.create_task( dostuff(0) )
Он никогда не запустится, если в цикле нет незавершенной задачи.

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

async def main(self, ):
print("keep alive running")
while True:
await asyncio.sleep(0.1)
Затем я запускаю цикл.

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

thread = threading.Thread( target = loop.run_forever)
loop.create_task( main() )
thread.start()
Теперь цикл.create_task создаст и запустит задачу. Почему цикл событий не продолжает обрабатывать задачи, если нет запущенных задач?

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