我正在创建多个线程来执行生成PDF的功能。该过程需要很多时间,因此用户可以选择取消执行。
要停止线程,我知道我可以使用threading.Event()
来检查它是否将被设置。但是,我在事件循环中执行的功能的过程是直接/线性的(没有循环可定期检查是否设置了事件)。
--threading class--
def execute_function(self, function_to_execute, total_executions, execution_time, controller):
self.event = threading.Event()
self.event_list.append(self.event)
self.loop = asyncio.get_event_loop()
self.future = self.loop.run_in_executor(self._executor, function_to_execute, self.event, total_executions,
execution_time, controller)
def stop_executor(self):
for event in self.event_list:
event.set()
self.event = None
if self._executor:
self._executor.shutdown(wait=False)
def *function_to_execute*(self, event, total_execution, seconds=SECONDS_DEFAULT, controller=None):
self.event = event
self.controller = controller
...
我的问题是,我无法实现Event来中断线程而没有循环来定期检查Event。 还有其他方法可以停止所有这些线程吗? 或者,如果我仍然使用Event,是否还有其他逻辑可以实现它?
谢谢!