Timestamps
它是 Unix 時間戳增量嗎?
我有一個簡單的 Python 程序,可以從感測器收集數據。然後程序將通過 REST POST 請求將數據連同系統的時間戳一起發送到遠端伺服器。
如果 POST 請求失敗,數據連同時間戳將被保存到 CSV 文件中。一旦 Internet 連接再次可用,CSV 文件中的數據將被發送到遠端伺服器。
在遠端伺服器上,我有一個簡單的 PHP 應用程序,它將根據收集的數據生成一個圖表。
我的問題:Unix 時間戳是增量的和唯一的嗎?將時間戳按升序排序以查看收集的數據順序是否安全?
不能保證時間戳是增量的。獲取系統時間的正常方法是
gettimeofday
根本不提供任何保證。在實踐中,
gettimeofday
將是單調的,除非系統管理員或配置錯誤導致系統時鐘發生變化。gettimeofday
最多只有微秒的解析度。這並不能保證如果兩次呼叫之間gettimeofday
的間隔超過 1µs,則該值將被更新,但是呼叫之間的間隔越長,值更改的可能性就越大。一些系統支持單調時鐘,通過呼叫
clock_gettime
時鐘 id來讀取CLOCK_MONOTONIC
。time.CLOCK_MONOTONIC
Python從 3.3 版開始提供對這個時間的訪問。該時鐘僅在重新啟動之間是單調的,並且不能保證連續呼叫返回不同的值,儘管這兩個屬性都極有可能。如果您想絕對保證某個欄位是增量的,請在單獨的欄位中維護一個計數器。