У меня есть цикл обработки событий, который выполняет функцию асинхронно.Однако эта функция генерирует большие данные, поэтому выполнение программы будет немного длинным, когда программа посетит эту функцию.Я также реализовал кнопку остановки, чтобы приложение выходило из этой функции, даже если цикл обработки событий еще не завершен.Проблема в том, как немедленно выйти из этой функции или как убить поток в asyncio.
Я уже пытался использовать флаг в функции, но выполнение функции достаточно быстрое, чтобы проверить флаг передпользователь нажимает на кнопку остановки.Короче говоря, поток уже работает в фоновом режиме.
def execute_function(self, function_to_execute, *args):
self.loop = asyncio.get_event_loop()
self.future = self.loop.run_in_executor(self._executor, function_to_execute, *args)
return self.future
def stop_function(self):
if self._executor:
self._executor.shutdown(wait=False)
self.loop.stop()
self.loop.close()
Что-то не так или отсутствует в коде, который я дал?Ожидаемый результат должен быть, программа не будет генерировать данные в конце, если я нажму кнопку остановки.