【发布时间】: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 相关的一般问题,而不是特定于硬件的问题。