如何基于python測量代碼運行時間
這篇文章主要介紹了如何基于python測量代碼運行時間,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
Python 社區(qū)有句俗語: “python自己帶著電池” ,別自己寫計時框架。 Python3.2具備一個叫做 timeit 的完美計時工具可以測量python代碼的運行時間。
timeit 模塊:
timeit 模塊定義了接受兩個參數(shù)的 Timer 類。兩個參數(shù)都是字符串。 第一個參數(shù)是你要計時的語句或者函數(shù)。 傳遞給 Timer 的第二個參數(shù)是為第一個參數(shù)語句構(gòu)建環(huán)境的導(dǎo)入語句。 從內(nèi)部講, timeit 構(gòu)建起一個獨立的虛擬環(huán)境, 手工地執(zhí)行建立語句,然后手工地編譯和執(zhí)行被計時語句。
一旦有了 Timer 對象,最簡單的事就是調(diào)用 timeit(),它接受一個參數(shù)為每個測試中調(diào)用被計時語句的次數(shù),默認(rèn)為一百萬次;返回所耗費的秒數(shù)。
Timer 對象的另一個主要方法是 repeat(), 它接受兩個可選參數(shù)。 第一個參數(shù)是重復(fù)整個測試的次數(shù),第二個參數(shù)是每個測試中調(diào)用被計時語句的次數(shù)。 兩個參數(shù)都是可選的,它們的默認(rèn)值分別是 3 和 1000000。 repeat() 方法返回以秒記錄的每個測試循環(huán)的耗時列表。Python 有一個方便的 min 函數(shù)可以把輸入的列表返回成最小值,如:
min(t.repeat(3, 1000000))
你可以在命令行使用 timeit 模塊來測試一個已存在的 Python 程序,而不需要修改代碼。
具體可參見文檔: http://docs.python.org/library/timeit.html
1、程序代碼
def print_func_time(function): ''' 計算程序運行時間 :param function: :return: ''' @wraps(function) def func_time(*args, **kwargs): t0 = time.clock() result = function(*args, **kwargs) t1 = time.clock() print("Total running time: %s s" % (str(t1 - t0))) return result return func_time
2、使用print_func_time
@print_func_time def test(): print(123) test()
3、控制臺輸出程序運行時間
123 Total running time: 2.233830763170168e-05 s
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python中def()函數(shù)的實戰(zhàn)練習(xí)題
def是define的縮寫,用來自定義函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python中def()函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07Python根據(jù)當(dāng)前日期取去年同星期日期
最近做項目,遇到這樣的業(yè)務(wù)開發(fā)需求,需要對比當(dāng)前時間段和去年同星期的時間段的數(shù)據(jù),下面小編通過實例代碼給大家分享Python根據(jù)當(dāng)前日期取去年同星期日期,需要的朋友參考下2019-04-04Python網(wǎng)絡(luò)編程之TCP與UDP協(xié)議套接字用法示例
這篇文章主要介紹了Python網(wǎng)絡(luò)編程之TCP與UDP協(xié)議套接字用法,結(jié)合實例形式較為詳細(xì)的分析了Python網(wǎng)絡(luò)編程中TCP與UDP協(xié)議客戶端、服務(wù)器端相關(guān)實現(xiàn)及使用技巧,需要的朋友可以參考下2018-02-02