2 回答
TA贡献1840条经验 获得超5个赞
如果您的目标是在长距离上跟上实际时间,请不要使用延迟。
总是会有延迟,最终你会下班,这是原因——在事件开始和新事件调度之间有非零 CPU 工作,而且你总是有任务优先级。
因此,如果您想要延迟 — 使用带有“run_after”接口的接口(sched
以防万一.enter
)。如果你想安排事情 - 使用“run_at”(.enterabs
在你的情况下)。顺便说一句,考虑到您在 python 中只有一个进程,您仍然可以“迟到”,但这不是您可以影响的。
旁注:您很少想重新定义调度程序计时器,默认值很好,它time.monotonic
与回退一起使用time.time
。如果您的代码能够在现实世界中使用,单调性将使您免于意外的痛苦。
TA贡献1877条经验 获得超1个赞
用time.time实际做的时机。您可以使用 tkinter 的时钟更新用户界面,但将其更新为启动计时器时的时间增量值。
我使用基于 tkinter 的 PySimpleGUI 制作了一个类似的应用程序。我的计时方式是这样的......伪代码如下,因为我正在使用包装器来执行这些功能......
start_time = int(round(time.time() * 100))
while True:
# use timer using tkinter's 'after' method
# tkroot.after(timeout, alarmcallback) (Pseudocode)
# tkroot.mainloop()
# in the alarm callback I called quit tkroot.quit()
# Then I'm back in my code....
current_time = int(round(time.time() * 100)) - start_time
# Update the GUI with current_time
添加回答
举报