2014-08-27 142 views
2

的行爲,因此我可以使用time.clock()來衡量一個函數調用的運行時間:困惑time.clock的Python中

>>> def f() : 
    a = time.clock() 
    range(pow(10,8)) 
    b = time.clock() 
    print a,b 

>>> f() 
0.143698 8.345905 

但是現在如果只是調用time.clock()重複地從交互式shell:

>>> time.clock() 
0.075492 
>>> time.clock() 
0.075931 
>>> time.clock() 
0.076354 
>>> time.clock() 
0.076754 
>>> time.clock() 
0.077132 
... 

這些數字的含義是什麼?

現在,如果我這樣做:

>>> def g() : 
     a = time.clock() 
     time.sleep(10) 
     b = time.clock() 
     print a,b 

>>> g() 
8.361528 8.361625 

好吧,我想這sleep不處理時間計算在內,因此這兩個數字非常接近。但是8.361528對應什麼?在模塊時間

幫助的內置功能時鐘:

我看過的文檔,但我還是不明白

時鐘(...) 時鐘() - >浮點數

Return the CPU time or real time since the start of the process or since 
the first call to clock(). This has as much precision as the system 
records. 
+3

參見例如http://stackoverflow.com/a/25317322/3001761 – jonrsharpe 2014-08-27 12:50:28

+0

@jonrsharpe:我一定很愚蠢,但我還是不明白數字0.077和8.36的意思。 – 2014-08-27 13:16:15

+0

@usualme:不解釋絕對值,解釋*相對差異*。這是你唯一關心的。 – 2014-08-27 13:27:38

回答

0

time.clock() docs

在Unix,返回當前處理器時間以秒錶示浮點數。 ...
在Windows上,此函數會返回自第一次調用此函數以來所經過的掛鐘時間...

即,所有平臺上的行爲(例如,什麼「處理器時間」意味着是否包括sleep時間,精度是多少)取決於平臺,但單位是

所以我可以使用time.clock()來衡量一個函數調用的運行時間:

使用timeit.default_timer()代替。根據操作系統的不同,它被分配到time.time()time.clock()。在Python 3上。3+ default_timer在所有平臺上均爲time.perf_counter()

它以秒爲單位返回值(只有相對值是有意義的)。它包括「睡眠」時間。它提供了最高的可用分辨率來測量短時間。這種行爲在不同平臺上是一致的

+0

它也可以用於計時代碼,如互聯網請求(requests.get('www.google.com')')或數據庫查詢嗎? – 2014-10-29 13:36:57

+0

@usualme:是的。 'timeit.default_timer()'測量一個掛鐘時間。 – jfs 2014-10-29 14:51:17

1

什麼系統?

「此方法返回當前處理器時間如在Unix和Windows它返回自第一次調用該函數經過掛鐘秒,作爲一個浮點數秒錶示的浮點數。」

http://www.tutorialspoint.com/python/time_clock.htm

+0

這不僅僅是一個回答而是一個評論。 – chepner 2014-08-27 13:28:20

+0

由於此時創作用戶的聲譽尚未[足夠](http://meta.stackexchange.com/a/25791)到[評論](http://stackoverflow.com/help/privileges/comment),因此發佈答案似乎是唯一的選擇。 – 2014-08-27 13:36:55

0

time.clock()出現返回的Python進程所花費計算的東西的時間。至少在交互式控制檯中,等待輸入的時間在某種程度上不包括在內。

這裏有一個片段,你可以用它來看到的time.clock()更預期的行爲:

while True: print clock()