我试图异步运行一些定期(调度程序)方法,因此不会阻止UI线程。
我目前的代码是:
class Job():
def run(self):
thread = threading.Thread(target=self.run_inside_thread, args=[])
thread.setDaemon(True)
thread.start()
def run_inside_thread(self):
schedule.every(self.tick).seconds.do(self.call_method)
while True:
if self.isRunning:
schedule.run_pending()
我使用if self.isRunning:
,以便我可以停止并启动任务。
问题是这阻止了我的UI(但只在服务器上 - 在我的本地开发机器UI上工作)
我做错了什么?根据我的理解,代码应该在另一个线程(而不是UI一个)上运行异步。
我看到"修复"你放time.sleep(1)
,但这意味着我不能运行方法sunner然后1秒。例如,如果我做time.sleep(0.1)
它不起作用。 (UI线程被阻止)