是Unix时间戳增量吗?

是Unix时间戳增量吗?

我有一个简单的 Python 程序,可以从传感器收集数据。然后,程序将通过 REST POST 请求将数据与系统时间戳一起发送到远程服务器。

如果 POST 请求失败,数据连同时间戳将被保存到 CSV 文件中。一旦互联网连接再次可用,CSV 文件上的数据将被发送到远程服务器。

在远程服务器上,我有一个简单的 PHP 应用程序,它将根据收集的数据生成图表。

我的问题:Unix时间戳是递增的且唯一的吗?按升序对时间戳进行排序以查看收集的数据顺序是否安全?

答案1

不保证时间戳是增量的。获取系统时间的正常方法是gettimeofday这根本不提供任何保证。

实际上,gettimeofday除非系统管理员或配置错误导致系统时钟发生变化,否则将是单调的。gettimeofday最多具有微秒分辨率。如果两次调用之间的间隔gettimeofday超过 1μs,这并不能保证该值会被更新,但调用之间的间隔越长,该值就越有可能发生更改。

有些系统支持单调时钟,通过调用读取clock_gettime与时钟 id CLOCK_MONOTONIC。 Python 通过以下方式提供对这个时间的访问time.CLOCK_MONOTONIC从 3.3 版本开始。该时钟仅在重新启动之间是单调的,并且不能保证连续的调用返回不同的值,尽管这两个属性都很有可能。

如果您想要绝对保证某些字段是增量的,请在单独的字段中维护一个计数器。

相关内容