[英]time.time() values jumping
問題:調用函數time.time()時,我注意到它在重新啟動后約30秒跳躍。 通過跳躍,我的意思是它立即將其返回值更改了約40秒。
設置:重新啟動后,我立即在Raspberry Pi 3B上運行腳本。 以后運行時不會發生此問題。
問題:為什么會發生? 我懷疑Raspberry在通過WiFi重新啟動后的某個時候會更改其系統時鍾。 可能是這個問題嗎? 我認為發布代碼沒有幫助,因為它確實是與time.time()函數相關的問題。
許多操作系統在啟動時都會更新時鍾。 time.time()
返回自紀元以來的時間,因此,如果時鍾更改,則now和紀元之間的差也將更改。
如果要避免這些跳躍,則可能需要使用單調計時器。 Python 3.3引入了time.monotonic()
,將其簽出。 從文檔中:
返回單調時鍾的值(以秒為單位),即不能向后移動的時鍾。 時鍾不受系統時鍾更新的影響。 返回值的參考點是不確定的,因此僅連續調用的結果之間的差有效。
對於Python <3.3,還有單調的第三方軟件包 。
這很可能是因為Raspberry Pi沒有實時時鍾。 相反,我建議您使用單調。 無論系統時鍾是否更改,這都應為您提供一致的輸出。
我通常使用的庫在此處可用,並且支持Python 2.7和Python3.X。
檢查惠斯勒是否可以調整來自NPT等外部來源的時鍾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.