在統計python代碼 執行速度時要使用到time包,在查找相關函數時有time.time()和time.clock()兩個函數可供選擇。而兩者是有區別的:
cpu 的運行機制:cpu是多任務的,例如在多進程的執行過程中,一段時間內會有對各進程被處理。一個進程從開始到結束其實是在這期間的一些列時間片斷上斷斷續續執行的。所以這就引出了程序執行的cpu時間(該程序單純在cpu上運行所需時間)和牆上時鍾wall time。
time.time()是統計的wall time(即牆上時鍾),也就是系統時鍾的時間戳(1970紀元后經過的浮點秒數)。所以兩次調用的時間差即為系統經過的總時間。
time.clock()是統計cpu時間 的工具,這在統計某一程序或函數的執行速度最為合適。兩次調用time.clock()函數的差值即為程序運行的cpu時間。
import time def test(): a = 0 for i in range(1,10000): a *=i t0 = time.time() t1 = time.clock() test() t_0 = time.time() t_1 = time.clock() print('系統時間:',t_0-t0) print('CPU時間:',t_1-t1)
運行結果:
系統時間: 0.0005710124969482422 CPU時間: 0.000563000000000001
可以發現,CPU時間比系統時間短,這是合理的,系統時間包含CPU時間,需要指出的是,程序運行期間的等待時間是不計算在CPU時間內的,如下:
import time def test(): a = 0 for i in range(1,10000): a *=i t0 = time.time() t1 = time.clock() test() time.sleep(2) t_0 = time.time() t_1 = time.clock() print('系統時間:',t_0-t0) print('CPU時間:',t_1-t1)
運行結果:
系統時間: 2.0023741722106934 CPU時間: 0.0005949999999999983