首页 > 解决方案 > 如何将正常运行时间转换为日期时间?

问题描述

我正在使用一个向我返回某些事件的系统正常运行时间的 API,它看起来像这样:

8185.16

我想将其转换为 unix 时间,以便能够判断此事件何时发生在当前机器的范围之外。问题是我似乎找不到任何现有的代码。

我尝试编写一个函数来计算 unix 时间和正常运行时间之间的增量,而不是将其应用于所有测量。它看起来像这样:

def uptime():
    with open('/proc/uptime') as f:
        uptime = float(f.read().split()[0])
        now = datetime.datetime.now().timestamp()
        return uptime, now, now - uptime

但问题是,它的工作速度不够快,最多会产生 10 毫秒的不准确性,我宁愿避免这种情况。例如,在这两次运行之间,增量从 1604944228.561784 变化到 1604944228.5529969,即 8.7 毫秒

In [252]: time uptime()
CPU times: user 1.26 ms, sys: 209 µs, total: 1.47 ms
Wall time: 1.67 ms
Out[252]: (8625.91, 1604952854.471784, 1604944228.561784)

In [250]: time uptime()
CPU times: user 0 ns, sys: 1.57 ms, total: 1.57 ms
Wall time: 1.25 ms
Out[250]: (8624.89, 1604952853.442997, 1604944228.5529969)

是否存在可以为我提供更可靠结果的现有代码,或者是否有任何其他方法可以更快地解决此问题?

目前我正在运行这 10000 次并使用这 10000 个值的平均值,但这对我来说似乎不是一个好的解决方案。

感谢您的时间。

标签: pythonlinuxtime

解决方案


推荐阅读