【发布时间】:2009-09-10 10:51:59
【问题描述】:
我最近开始学习 Python,我正在制作的简单应用程序的一部分包括一个计时器,该计时器具有在自己的线程中运行的 hh:mm:ss 显示。
环顾网络,我发现了两种实现方式:
- 使用 sched.scheduler
- 使用 threading.Timer
这两种实现的方式看起来很相似:
预定:
def tick(self, display, alarm_time):
# Schedule this function to run every minute
s = sched.scheduler(time.time, time.sleep)
s.enter(1, 1, self.tick, ([display, alarm_time]))
# Update the time
self.updateTime(display)
计时器:
def tick(self, display):
# Schedule this function to run every second
t = Timer(1, self.tick, (display,alarm_time))
t.start()
# Update the time
self.updateTime(display)
在正确滴答方面工作正常,但几分钟后会生成以下错误:RuntimeError:超出最大递归深度。我知道您可以手动增加最大递归级别,但这里肯定不需要这样做吗?
没有错误,但有时会跳过秒数,或不规则滴答。
有人可以为我指出正确的方向吗?谢谢。
【问题讨论】:
-
请张贴您找到的使用 threading.Timer 的链接。
-
您的问题标题完全错误。您的 Timer 超出了递归深度。不是 sched.scheduler。
-
对不起,如果我不清楚。已编辑的问题。使用 Timer 的建议来自这里 docs.python.org/library/sched.html> 请记住,我只是一个初学者,可能有错误的想法。
标签: python timer clock scheduler