Python 1秒钟计时器

时间:2014-10-15 23:50:49

标签: python

我有一个每秒触发并更新一个时钟的螺纹定时器,问题是有时时钟看起来不稳定,它可以跳2秒而不是稳定的1秒增量。

问题当然是初始(或后续)定时器不会在0:000秒时触发,因此时钟更新可能会出现抖动。

有没有办法阻止这种情况?

from threading import Timer
def timer():
  Timer(1.00, timer).start()
  STAT['ftime'] = time.strftime("%H:%M:%S")

2 个答案:

答案 0 :(得分:0)

start_time = time.time()
interval = 1
for i in range(20):
    time.sleep(start_time + i*interval - time.time())
    # do a thing

将'20'替换为您想要的时间。

答案 1 :(得分:0)

有多种方法如何安排,有些设计甚至可能提供措施,以便能够在计划的调度时间线上为阻塞/失败启动提供一些可接受的补救措施 - 可能有助于更精细的时间/分层定时/外部同步/异步操作。

如果没有更多细节,“推荐”的做法会很糟糕,但有人可能会受到影响:

  • 如果实时约束允许承受更多开销,则可以进入“超采样”弹性,故障恢复调度方案,以避免2秒间隙(如果失败则 {{ 1}} 启动),其中 .Timer() 模型每50毫秒启动一次,嵌入式逻辑决定,如果它是正确时间(在理想化的一秒边缘不超过一个调度间隔的一半的情况下,并且在RTC不“接近”计划的理想化的情况下执行旨在运行的实际工作,或仅执行threading.Timer()安排时间。
  • 一个好的python设计也不能忘记 return -lock问题的问题,避免使用blockingIO(s),为CPU绑定的部分实现合理的任务分段代码