Завершение работы корутины

Имею дополнительный поток, в котором создаётся корутина. По - сути как корутина она не используется, мне надо просто прервать её выполнение. Я набросал следующий код:

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

Вижу Вы хотите остановить поток. Насколько мне известно поток нельзя остановить до его завершения, до завершения цикла. Но можно им управлять. Например ввести логическую переменную остановки цикла изменяемую вне потока. Тогда выполнение потока остановится.

→ Ссылка