【问题标题】:Measure time with Python when device's epoch time is unreliable当设备的纪元时间不可靠时,使用 Python 测量时间
【发布时间】:2017-05-16 11:58:21
【问题描述】:

我需要计算在 Raspberry Pi 上执行某些代码之间经过的秒数。通常我会在 Python 中这样做:

start = time.time()
execute_my_function()
end = time.time()
elapsed = end - start

但是,Raspberry Pi 不包含 RTC,而是依赖 NTP。也就是说,开机后的第一时间,系统时间是1970年1月1日,所以“end”和“start”的时间差往往会变成47年左右。

如果系统时间不可靠,我如何以秒为单位测量经过的时间(据我所知,“timeit”模块依赖于“时间”,因此也不起作用)?不一定要完全准确——多或少一两秒都可以。

编辑:我在阅读 /proc/uptime 时做了一种修改,我认为它与系统时间无关,但我觉得这种方式很脏。我希望有一个较少依赖操作系统的解决方案。

【问题讨论】:

  • 或许您可以等到 NTP 同步完成后再开始运行您的代码。不知道你怎么能做到这一点,但可能有办法。一种肮脏的方式是在延迟循环中等待,直到时间不等于 1970 年 1 月 1 日
  • 开机后需要马上启动程序吗?你能依赖NTP吗?使用systemd 或类似的?您可以将 NTP 指定为依赖项。
  • 很遗憾,我不能依赖 NTP。该系统旨在运行,即使它不时离线,包括在启动时。
  • @OleWolf 你在这里问过raspberrypi.stackexchange.com吗?
  • 没有。在 Raspberry Pi 相关小组中询问我的想法,但我认为这是与 Linux 上的 Python 相关的一般问题,而不是特定于硬件的问题。

标签: python time clock epoch


【解决方案1】:

您可以让您的程序等到start_time 具有有意义的值:

while time.time() < 1e6:
    time.sleep(10)

【讨论】:

    猜你喜欢
    • 2012-01-30
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2019-02-04
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多