是否有一個簡單的方法/模塊正確在python中測量所用時間?我知道我可以簡單地打電話time.time()
兩次,並採取差異,但如果系統時間發生變化,則會產生錯誤的結果。當然,這並不經常發生,但它確實表明我正在測量錯誤的東西。在python中測量所用時間
使用time.time()
來衡量持續時間是非常迂迴的,當你想到它。您可以根據持續時間測量(由定時器執行)和已知絕對時間(手動設置或通過ntp設置)構建的兩個絕對時間測量值進行差異測量,您完全不感興趣。
那麼,有沒有辦法直接查詢這個「計時器時間」?我會想象它可以表示爲毫秒或微秒的值,它沒有有意義的絕對錶示(因此不需要用系統時間進行調整)。縱觀一下,這似乎正是System.nanoTime()
在Java中所做的,但我沒有找到相應的Python函數,儘管它應該(硬件技術上)比time.time()
更容易提供。
編輯:爲了避免混淆,並解決下面的答案:這不是關於夏令時的變化,我也不想CPU時間 - 我想要經過的物理時間。它不需要非常精細,甚至不是特別準確。只是因爲有人決定將系統時鐘設置爲不同的值,它不應該給我負面的持續時間,或持續時間超過幾個數量級(高於粒度)。下面介紹一下Python文檔說一下「了time.time()」:
這正是我想避免的東西,因爲它可以在時間計算導致像負值奇怪的事情。目前我可以解決這個問題,但我相信在可行的情況下學習使用適當的解決方案是一個不錯的主意,因爲有一天這些問題將會回來咬你。編輯2:一些研究表明你可以通過使用GetTickCount64()在Windows中獲得像我想要的系統時間獨立測量,在Linux下,你可以在times()的返回值中獲得它。但是,我仍然無法找到一個在Python中提供此功能的模塊。
如果你想基準點的東西,你應該使用'timeit'。 – delnan
相關:[我如何在python中獲得單調持續時間?](http://stackoverflow.com/questions/1205722/how-do-i-get-monotonic-time-durations-in-python) – jfs