【问题标题】:time.time() values jumpingtime.time() 值跳跃
【发布时间】:2016-10-08 22:55:39
【问题描述】:

问题: 在调用函数 time.time() 时,我注意到它在重新启动后大约 30 秒跳跃。通过跳跃,我的意思是它立即将其返回值更改大约 40 秒。

设置: 我在一个 Raspberry Pi 3B 上运行我的脚本,重启后立即。稍后运行时不会出现此问题。

问题: 为什么会出现这种情况?我怀疑 Raspberry 在通过 WiFi 重新启动后的某个时间点会更改其系统时钟。可能是这个问题吗?我不认为发布代码有帮助,因为这确实是一个与 time.time() 函数相关的问题。

【问题讨论】:

  • 那么,让你回答你自己的问题,如果你禁用 WiFi 会做什么?

标签: python time raspberry-pi clock


【解决方案1】:

许多操作系统会在启动时更新其时钟。 time.time() 返回自 Epoch 以来的时间,因此如果时钟发生变化,现在与 Epoch 之间的增量也会发生变化。

如果您想避免这些跳跃,您可能需要使用单调计时器。 Python 3.3 引入了time.monotonic(),查看一下。来自文档:

返回单调时钟的值(以秒为单位),即不能倒退的时钟。时钟不受系统时钟更新的影响。返回值的参考点是未定义的,因此只有连续调用的结果之间的差异才有效。

对于 Python monotonic third party package。

【讨论】:

    【解决方案2】:

    这很可能是因为 Raspberry Pi 没有实时时钟。相反,我建议您使用单调。无论系统时钟是否发生变化,这都会为您提供一致的输出。

    我常用的库是here,支持Python 2.7和Python 3.X。

    【讨论】:

      【解决方案3】:

      检查它是否调整了来自 NPT 等外部来源的时钟。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        相关资源
        最近更新 更多