即使它們已被棄用且存在比time
(即timeit
)更好的模塊,我想知道兩個函數time.clock()
和time.time()
之間的差異。瞭解time.clock()和time.time()
從後者開始(time.time()
),它基本上以秒爲單位返回從1970年1月1日(如果我沒有錯的話)流逝的時間,精度通常爲1秒。 '直到這裏很容易。
相反,time.clock()
還是讓我感到困惑。 來自文檔:
在Unix上,返回當前處理器時間作爲以秒爲單位的浮點數。精確性,實際上「處理器時間」含義的定義取決於具有相同名稱的C函數的精確性,但無論如何,這是用於基準測試Python或時序算法的函數。
在Windows中,此函數返回自第一次調用該函數經過掛鐘秒,作爲一個浮點數,基於Win32函數QueryPerformanceCounter的()。分辨率通常優於1微秒。
現在在Windows中很清楚,它的確如time.time()
所做的那樣,只是精度更高。
但在Unix/Linux下我無法理解。我嘗試下面的代碼:
import time
def procedure():
time.sleep(2.5)
# measure process time
t0 = time.clock()
procedure()
print(time.clock() - t0, "process time")
和我5.300000000000096e-05 seconds process time
這是非常奇怪的我。
閱讀this已經張貼問題的答案說:
[...] time.clock()測量的已使用當前進程的CPU時間。
但我無法得到它,當前進程使用的時間在做什麼?當我在Unix上撥打time.clock()
時,我得到一個浮點數,這意味着在那個瞬間?從過程中消耗的時間多少?至 ??
「棄用」表示它們將在未來的版本中被刪除,這與推薦不以特定方式使用時不同。 – chepner 2014-09-10 19:57:23
嘗試在需要幾秒鐘計算的函數中放入一個'print(time.clock())',那麼它會更有意義。 – 2014-09-10 20:00:20