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