雜亂大全09-(Python系列)調用time計算執行時間

  • 主題:雜亂大全09-(Python系列)調用time計算執行時間
  • 前言:使用time來查看程式執行時間
  • 叮嚀: $ 代表對CMD或terminal(終端機)下指令
tags: 六角學院

本篇重點:

  1. 調用常見的time.time()
  2. 調用常見的time.perf_counter()
  3. 調用常見的time.process_time()

實作程式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import time


#先呼叫一次
t1=time.time()
t2=time.perf_counter()
t3=time.process_time()

#start
s1=time.time()
time.sleep(1)
e1=time.time()
#end
print("done..")

s2=time.perf_counter()
time.sleep(1)
e2=time.perf_counter()
print("done..")


s3=time.process_time()
time.sleep(1)
e3=time.process_time()

print("done..")
print("time.time ",e1-s1)
print("time.perf_counter ",e2-s2)
print("time.process_time ",e3-s3)
#time.clock has deprecated in Py 3.3 and removed from Py 3.8
print("NOW: ",time.strftime("%A %B %d %H:%M:%S"))

執行結果:

1
2
3
4
5
6
7
done..
done..
done..
time.time 1.0010020732879639
time.perf_counter 1.0010546330013312
time.process_time 4.3430999999996556e-05
NOW: Tuesday November 17 06:20:52
  • 都是暫停一秒,卻有三種不同結果

分析

  • time.time()
    返回當前時間的時間戳記(1970 紀元年後經過的浮點秒數)
  • time.clock()
    用以浮點數計算的秒數返回當前的 CPU 時間。
    用來衡量不同程式的耗時,比 time.time() 更有用。
    但已經不適合使用,於py3.8被移除

  • time.perf_counter()
    返回計時器的精準時間(系統的執行時間),
    包含整個系統的睡眠時間。由於返回值的基準點是未定義的,
    所以,只有連續調用的結果之間的差才是有效的。

  • time.process_time()
    返回當前進程執行 CPU 的時間總和,不包含睡眠時間。
    由於返回值的基準點是未定義的,
    所以,只有連續調用的結果之間的差才是有效的。


補充

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
time.strftime()

%y 兩位數的年份表示(00-99)
%Y 四位數的年份表示(000-9999)
%m 月份(01-12)
%d 月內中的一天(0-31)
%H 24小時制小時數(0-23)
%I 12小時制小時數(01-12)
%M 分鐘數(00=59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366)
%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(00-53)星期天為星期的開始
%w 星期(0-6),星期天為星期的開始
%W 一年中的星期數(00-53)星期一為星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%Z 當前時區的名稱
%% %號本身

小結語:

使用不同的函式調用time有不同的效果
要找對函式,以免時間比對出現問題

  • 建議使用time.perf_counter()

後續:

接下來會繼續討論Python的應用


參考連結