Завершение работы корутины
Имею дополнительный поток, в котором создаётся корутина. По - сути как корутина она не используется, мне надо просто прервать её выполнение. Я набросал следующий код:
class TestThread(Thread):
def __init__(self):
Thread.__init__(self)
self.loop = asyncio.get_event_loop()
self.task = self.loop.create_task(self.printNumbers())
async def printNumbers(self):
try:
for i in range(0, 1000000):
print(i)
except asyncio.CancelledError:
raise
def run(self):
self.loop.run_forever()
def stop(self):
self.task.cancel()
self.loop.stop()
def main():
testThread = TestThread()
testThread.start()
time.sleep(5)
testThread.stop()
Однако работа корутины не останавливается. Какие есть варианты?
Ответы (1 шт):
Автор решения: Alexandr1234567890
→ Ссылка
Вижу Вы хотите остановить поток. Насколько мне известно поток нельзя остановить до его завершения, до завершения цикла. Но можно им управлять. Например ввести логическую переменную остановки цикла изменяемую вне потока. Тогда выполнение потока остановится.