2013-10-16 24 views
2

在Windows 7上使用Python 2.7.5,我遇到了問題。time.clock()在Python中幾次?

我正在編寫一個應用程序,計算計算一些數學算法所需的時間。我使用start=time.clock()elapsed=time.clock()-start。這是有效的,但是當我第二次嘗試start=time.clock()它不起作用。我得到這個消息:

start=time.time() 
AttributeError: 'float' object has no attribute 'time' 

我顯然不能使用time.clock()好幾次,但我可以用什麼代替?

回答

3

看起來你的代碼在某處有time = <some calculated value>從指向正確的模塊到浮動對象替換名稱「時間」。

+0

沒有那不是問題。代碼看起來和工作的完全一樣。我「複製」它。 – Katja

+0

這沒有任何意義,我可以調用time.clock()儘可能多的時間,並且你得到的錯誤是告訴你,你的「時間」對象是一個浮點數 – Nico

+0

我刪除了所有內容並重新編寫程序,它如此簡短。現在它可以工作。我仍然不知道什麼是錯誤的,因爲我甚至使用相同的名稱的變量..謝謝! – Katja

2

你不應該使用time.clock()

在Unix,返回當前處理器時間以秒錶示浮點數 。精確度,實際上「處理器時間」的含義的定義依賴於具有相同名稱的C函數 的精確度,但在任何情況下,這都是用於基準測試Python或時序算法的函數。

在Windows上,此函數根據 Win32函數QueryPerformanceCounter()以 作爲浮點數第一次調用該函數以來的時間間隔秒數。分辨率通常爲 ,優於1微秒。

而是使用time.time()

返回的時間,以秒從epoch爲浮點數。 請注意,即使時間始終以浮點數 的數字返回,但並非所有系統的時間精度均高於1秒鐘。雖然此函數通常返回非遞減值,但如果系統時鐘的 已在兩次調用之間回退,則它可返回比先前調用更低的值。

爲了把差轉換成更容易條款:當你第一次叫time.clock()將啓動一個定時器,每一個後續調用time.clock()將產生時間以來的第一個電話。而使用time.time()將永遠給你從時代開始的時間。

爲了澄清,time.clock()是一種相對時間測量方法,相對於當您首次使用time.clock()方法開始計時時,而使用time.time()時,您將獲得自每次計時以來的秒數。

在這兩種方法中,您都可以很容易地推斷出它們之間的差異,但是在需要更復雜的時間測量時,使用time.clock()可能會產生無法預料的後果,如多個線程或需要相互通信的不同功能 - 所有的時間都是相對於自己而言的,很難保持恆定。

0

,你可以到

start1 = time.clock() 

Calculation 

print "Runtime: " + str(time.clock() - start1) 

start2 = time.clock() 

Calculation 

print "Runtime: " + str(time.clock() - start2) 
相關問題