如何 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
时,当我尝试退出时似乎可以很好地退出程序。
我有一个应用程序,我正在尝试将网站更新添加到每分钟。那部分目前工作得很好。我在当前这段代码摘录中遇到的问题是,当我转到 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
时,当我尝试退出时似乎可以很好地退出程序。