使用threading.Event()停止所有线程

时间:2019-03-27 04:30:24

标签: python-3.x python-asyncio python-multithreading

我正在创建多个线程来执行生成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,是否还有其他逻辑可以实现它?

谢谢!

0 个答案:

没有答案