我有一个函数,可以计算出一些内容然后将其放入PDF。但是,此过程需要时间。因此,我们为用户实现了停止按钮以停止该过程。
我尝试使用thread.Event()
,但是我正在使用的函数是非循环函数。这意味着,我无法定期检查是否设置了事件。 (通过简单地放置多个检查器来对应用程序进行编码就可以了,但是不会-那个想法不被接受。)
def generate_data(self, event):
self.thread = threading.Thread(target=self.check_event)
self.thread.start()
...
def check_event(self):
while True:
if self.event.is_set():
self.controller.enable_run_btn_and_tab()
return
time.sleep(1)
我的想法是创建另一个线程,该线程将定期检查是否设置了事件,以便我可以返回并退出该函数。但是,以上用于def check_event(self)
的代码将仅退出子线程,而不会退出generate_date(self)
的线程。
我的代码中是否有一些代码或修改过的代码可以使用子线程停止主线程?