如何 pause/sleep() 在不使应用程序崩溃的情况下运行?

How to pause/sleep() function without crashing app?

我有一个应用程序,我正在尝试将网站更新添加到每分钟。那部分目前工作得很好。我在当前这段代码摘录中遇到的问题是,当我转到 close/exit 应用程序时,我必须按几次“X”按钮,它就会完全崩溃并冻结。

如果我的理解是正确的,我相信这种情况正在发生,因为当我尝试退出时 time.sleep() 仍然不断地“运行ning”。

我怎样才能 运行 像这样的定期更新不会在我想关闭应用程序时让应用程序陷入困境?有人可以帮我解决这个问题吗?

我在这里的这个工作示例中只添加了 5 秒的睡眠,而不是我预期的 60 秒,以便在您测试时节省时间。

import time
from threading import Thread
from kivy.app import App

class Test(App):
    def build(self):
        self.thread_for_update()

    def thread_for_update(self):
        p1 = Thread(target=lambda: self.check_for_update())
        p1.start()

    def check_for_update(self):
        time.sleep(5)
        print("Update")
        # Here I'm checking an online data source for changes
        # I will also notify user if theres changes
        self.thread_for_update()
Test().run()

您可以使用 threading.Timer,并在另一个函数中更新它。

threading.Timer 接受 2 个参数,延迟(以秒为单位)和要调用的函数。

def check_for_update(self):
        Timer(5, self.update).start()
        

def update(self):
        print("Update")
        self.thread_for_update()

我想我可能已经修好了。当我添加 p1.daemon = True 时,当我尝试退出时似乎可以很好地退出程序。