1. 程式人生 > >分別利用timeit和time模組測試python程式碼執行時間

分別利用timeit和time模組測試python程式碼執行時間

       在python中,當我們想測試一段程式碼的執行時間時,可以利用python的timeit模組和time模組。這兩個模組在功能上都可以實現對程式碼執行時間的計算,但是本文推薦使用的是timeit模組,因為其是專門用來測試程式碼執行時間的,有一些靈活的方法,並且相對精度也會更高。下面我們分別來看下兩個模組的主要方法和用法。

       首先是timeit模組。timeit模組有一個Timer類,在構造Timer物件時,可以傳入兩個引數,兩個引數都是字串格式;第一個時要執行的程式碼物件,第二個是匯入被執行的物件,如圖一所示。當然也可以直接傳入一段可執行的程式碼,這樣便不需要傳入第二個引數。

       要計算程式碼執行的時間,只需要呼叫Timer物件的timeit方法即可,該方法有一個引數為整數型別,表示對這段程式碼執行的次數,然後再返回執行引數對應次數的總時間,該引數預設為1000000。Timer物件還有一個repeat方法,其兩個引數分別對應測試的次數和每次測試執行程式碼的次數,返回一個每次測試所需的時間列表。

       當然,我們也可以不用構造Timer物件,直接利用timeit中的timeit方法即可,其使用方法如圖一所示。其可實現的功能和Timer一樣,既可以執行現成的程式碼,也可以通過匯入實現,此外其還有一個number引數,表示執行程式碼的次數,返回執行對應次數的總時間。

圖一

       其次,也可以利用time模組測試程式碼執行時間。time模組中主要有三個函式,clock()、time()和localtime(),其中clock()返回的是從啟動該ide到當下的總時長,即改ide程式在cpu中存在的時間,也即cpu時間;time()返回的是UTC時間,是從1970年1月1日開始到現在的秒數時長;localtime()返回的是當下的一個時間,為time.struc_time物件,如圖二所示。

       當然,知道了這三個函式的意義,我們自然就可以在測試程式碼的開始和結尾處分別返回一個時間點,然後用結尾處的時間點減去開始出的時間點就可以得到測試程式碼的執行時間。但是由於clock()返回的是cpu時間,time()返回的是UTC時間,且從精度而言,clock()方法相對更準確,因此這兩者中,更推薦clock()方法。

圖二