最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?timeit使用小結(jié)

 更新時間:2025年01月24日 09:06:54   作者:蝦王之王  
本文主要介紹了Python?timeit使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

假設(shè)您要測量代碼段的執(zhí)行時間。你是做什么?直到現(xiàn)在,我就像大多數(shù)人一樣會做以下事情:

# 導(dǎo)入時間
start_time = time.time()
"""某些代碼"""
end_time = time.time()
print(f“執(zhí)行時間為:{end_time-start_time}”)

現(xiàn)在說我們要比較兩個不同函數(shù)的執(zhí)行時間,然后:

# 導(dǎo)入時間
def function_1(*參數(shù)):
 #做一點(diǎn)事
 #返回值
def function_2(*參數(shù)):
 #做一點(diǎn)事
 #返回值
 
#衡量function_1花費(fèi)的時間
start_of_f1 = time.time()
值1 = function_1(*參數(shù))
end_of_f1 = time.time()
print(f” function_1花費(fèi)的時間是:{start_of_f1-end_of_f1}”)#function_2所花費(fèi)的測量時間
start_of_f2 = time.time()
值2 = function_1(*參數(shù))
end_of_f2 = time.time()print(f” function_1花費(fèi)的時間是:{start_of_f2-end_of_f2}”)

這是大多數(shù)人衡量執(zhí)行時間并比較兩個功能的方式。

但是,如果必須測量非常小的代碼段所花費(fèi)的時間,則此方法無法產(chǎn)生準(zhǔn)確的結(jié)果。甚至在比較功能時,操作系統(tǒng)中發(fā)生的所有其他進(jìn)程和任務(wù)都與time.time()實(shí)例混為一談。因此比較功能時不準(zhǔn)確。

為了解決這個問題,Python有一個timeit模塊,該模塊用于測量大小代碼段的執(zhí)行時間。在本文的此處,我們首先使用一些示例來了解python 中的timeit庫。

首先,讓我們看看文檔中提供的概述。

在Python中的timeit

該模塊提供了一種計時少量Python代碼的簡單方法。它既具有命令行界面又具有可調(diào)用界面。它避免了許多用于測量執(zhí)行時間的常見陷阱。

這個模塊有一個函數(shù)timeit.timeit(stmt = pass,setup = pass,timer = <default timer>,number = 1000000)這個函數(shù)有四個參數(shù):

  • stmt:要測量其執(zhí)行時間的代碼段。
  • setup:執(zhí)行stmt之前要運(yùn)行的代碼。通常,它用于導(dǎo)入一些模塊或聲明一些必要的變量。通過示例將更加清楚。
  • timer:這是默認(rèn)的timeit.Timer對象。它有一個合理的默認(rèn)值,因此我們不必做太多事情。
  • number:指定將執(zhí)行stmt的次數(shù)。

它會回到執(zhí)行拍攝(秒)的時間語句,指定的數(shù)十倍。

讓我們看一些例子以更好地理解它。

導(dǎo)入時間

#此代碼在stmt之前僅執(zhí)行一次。
setup_code =“來自數(shù)學(xué)導(dǎo)入sqrt”

#此代碼將按照參數(shù)'number'的指定執(zhí)行
stmt_code =“ sum(sqrt(x)for范圍(1,10000)中的x)”
迭代次數(shù)= 10000
時間= timeit.timeit(stmt = stmt_code,設(shè)置= setup_code,數(shù)量=迭代次數(shù))

打?。〞r間)

#17.9秒
#此輸出適用于代碼片段的10000個版本,而不是一個單獨(dú)的版本。

print(f“單次迭代的時間為{time / iterations”“)

我們所做的只是將代碼作為字符串傳遞,并指定迭代次數(shù)給timeit.timeit函數(shù)。

現(xiàn)在,讓我們看看一種使用該驚人庫來比較兩個函數(shù)的方法。

在此示例中,讓我們比較兩個排序函數(shù),一個是簡單的冒泡排序,另一個是Python內(nèi)置的sorted()函數(shù)。在這里,我們還將看到另一個名為repeat()的timeit函數(shù)。

def bubble_sort(arr):
    對于范圍內(nèi)的我(len(arr)):
        對于范圍(0,len(arr)-i-1)中的j:
            如果arr [j]> arr [j + 1]:
                arr [j],arr [j + 1] = arr [j +1],arr [j]
    返回arr


def make_random_array():
    來自隨機(jī)進(jìn)口randint

    返回[randint(-100,100)表示范圍(20)中的i]


test_array = make_random_array()
'''
由于我們要確保在同一數(shù)組上測試函數(shù),因此我們聲明一個數(shù)組
在這里,稍后將在compare_functions()中調(diào)用它。
'''

def compare_functions():
    導(dǎo)入時間

    setup_code1 =“”“
來自__main__ import bubble_sort
從__main__導(dǎo)入test_array
“”
    setup_code2 =“”“
從__main__導(dǎo)入test_array
“”
    stmt_code1 =“ bubble_sort(test_array)”
    stmt_code2 =“ sorted(test_array)”

    times1 = timeit.repeat(stmt = stmt_code1,setup = setup_code1,number = 10000,repeat = 5)
    times2 = timeit.repeat(stmt = stmt_code2,setup = setup_code2,number = 10000,repeat = 5)
    print(f“氣泡排序所花費(fèi)的時間為{min(times1)}”)
    print(f“內(nèi)置排序所花費(fèi)的時間為{min(times2)}”)

如果__name__ ==“ __main__”:
    compare_functions()
“”
氣泡排序花費(fèi)的時間是0.2646727000001192
內(nèi)置排序所花費(fèi)的時間是0.0031973000000107277
“”

在這里,輸出是列表times1和times2中的最小值。

在設(shè)置代碼中,來自__main__導(dǎo)入氣泡排序
from __main__ import arr 這將導(dǎo)入程序中已定義的bubble_sort函數(shù),并導(dǎo)入我們在程序中先前聲明的數(shù)組“ test_array”。

這將確保兩個功能都在同一數(shù)組“ test_array”上進(jìn)行測試。

timeit.repeat()需要一個附加參數(shù),重復(fù)(默認(rèn)值= 5)。這將返回多次重復(fù)的代碼段的執(zhí)行時間列表。

正如預(yù)期的那樣,冒泡排序所花費(fèi)的時間比內(nèi)置的sorted()函數(shù)要多得多。

現(xiàn)在總結(jié),讓我們看看如何使用該庫中的命令行界面。

從命令行作為程序調(diào)用時,使用以下形式:

python -m timeit [-n N] [-r N] [-u U] [-s S] [聲明...]

這里,

-n N,執(zhí)行“語句”的次數(shù)。
-r N,重復(fù)多少次
-ss,設(shè)置語句
-uu,計時器輸出單位(nano,micro,mil,sec)

一些示例如下:

$ python -m timeit -s'text =“樣本字符串”; char =“ g”''文本中的字符'
5000000次循環(huán),最好是5次:每個循環(huán)0.0877微秒
$ python -m timeit -s'text =“樣本字符串”; char =“ g”''text.find(char)'
1000000次循環(huán),最好5次:每個循環(huán)0.342微秒

這結(jié)束了timeit模塊的介紹。我試圖涵蓋所有需要知道的知識,從現(xiàn)在開始開始使用此模塊。

這是該模塊的官方文檔。請看看它以了解有關(guān)此模塊的更多信息。我也鼓勵您在這里查看此模塊的源代碼。

到此這篇關(guān)于Python timeit使用小結(jié)的文章就介紹到這了,更多相關(guān)Python timeit內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python使用asyncio實(shí)現(xiàn)異步操作的示例

    Python使用asyncio實(shí)現(xiàn)異步操作的示例

    本文主要介紹了Python使用asyncio實(shí)現(xiàn)異步操作的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Python基于二分查找實(shí)現(xiàn)求整數(shù)平方根的方法

    Python基于二分查找實(shí)現(xiàn)求整數(shù)平方根的方法

    這篇文章主要介紹了Python基于二分查找實(shí)現(xiàn)求整數(shù)平方根的方法,涉及Python的二分查找算法與數(shù)學(xué)運(yùn)算相關(guān)技巧,需要的朋友可以參考下
    2016-05-05
  • windows下python安裝pip方法詳解

    windows下python安裝pip方法詳解

    這篇文章主要介紹了windows下python安裝pip方法詳解,需要的朋友可以參考下
    2020-02-02
  • Python語法學(xué)習(xí)之線程的創(chuàng)建與常用方法詳解

    Python語法學(xué)習(xí)之線程的創(chuàng)建與常用方法詳解

    本文主要介紹了線程的使用,線程是利用進(jìn)程的資源來執(zhí)行業(yè)務(wù),并且通過創(chuàng)建多個線程,對于資源的消耗相對來說會比較低,今天就來看一看線程的使用方法具體有哪些吧
    2022-04-04
  • python imread讀取文件失敗的問題及解決

    python imread讀取文件失敗的問題及解決

    這篇文章主要介紹了python imread讀取文件失敗的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python讀取excel數(shù)據(jù)繪制簡單曲線圖的完整步驟記錄

    python讀取excel數(shù)據(jù)繪制簡單曲線圖的完整步驟記錄

    這篇文章主要給大家介紹了關(guān)于python讀取excel數(shù)據(jù)繪制簡單曲線圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python爬蟲常見錯誤集合

    python爬蟲常見錯誤集合

    這篇文章主要介紹了python爬蟲常見錯誤,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 幾種實(shí)用的pythonic語法實(shí)例代碼

    幾種實(shí)用的pythonic語法實(shí)例代碼

    在我理解,Pythonic 就是很 Python 的 Python 代碼。下面這篇文章主要給大家分享介紹了幾種實(shí)用的pythonic語法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • Python鼠標(biāo)事件及坐標(biāo)獲取窗口和屏幕坐標(biāo)

    Python鼠標(biāo)事件及坐標(biāo)獲取窗口和屏幕坐標(biāo)

    這篇文章主要介紹了Python編程中如何通過鼠標(biāo)事件及坐標(biāo)獲取窗口坐標(biāo)和屏幕坐標(biāo)的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • PyQt5 對圖片進(jìn)行縮放的實(shí)例

    PyQt5 對圖片進(jìn)行縮放的實(shí)例

    今天小編就為大家分享一篇PyQt5 對圖片進(jìn)行縮放的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06

最新評論

日喀则市| 曲麻莱县| 西畴县| 梁河县| 崇州市| 洛扎县| 衢州市| 榆林市| 淮北市| 仪陇县| 伊宁市| 临城县| 那曲县| 广宁县| 樟树市| 若尔盖县| 百色市| 苗栗县| 汾阳市| 井研县| 来安县| 永丰县| 双牌县| 广饶县| 蓬莱市| 固始县| 金阳县| 阿鲁科尔沁旗| 临颍县| 大荔县| 新兴县| 屯昌县| 林西县| 大邑县| 海兴县| 武夷山市| 济南市| 额济纳旗| 绥德县| 英超| 乌拉特后旗|