天天看點

python time包中的time.time()和time.clock()的差別

在統計python代碼 執行速度時要使用到time包,在查找相關函數時有time.time()和time.clock()兩個函數可供選擇。而兩者是有差別的:

cpu 的運作機制:cpu是多任務的,例如在多程序的執行過程中,一段時間内會有對各程序被處理。一個程序從開始到結束其實是在這期間的一些列時間片斷上斷斷續續執行的。是以這就引出了程式執行的cpu時間(該程式單純在cpu上運作所需時間)和牆上時鐘wall time。

time.time()是統計的wall time(即牆上時鐘),也就是系統時鐘的時間戳(1970紀元後經過的浮點秒數)。是以兩次調用的時間差即為系統經過的總時間。

time.clock()是統計cpu時間 的工具,這在統計某一程式或函數的執行速度最為合适。兩次調用time.clock()函數的內插補點即為程式運作的cpu時間。

python time包中的time.time()和time.clock()的差別

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)

python time包中的time.time()和time.clock()的差別

運作結果:

可以發現,CPU時間比系統時間短,這是合理的,系統時間包含CPU時間,需要指出的是,程式運作期間的等待時間是不計算在CPU時間内的,如下:

python time包中的time.time()和time.clock()的差別

time.sleep(2)

python time包中的time.time()和time.clock()的差別