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

Python計(jì)算代碼運(yùn)行時(shí)間的四種方法

 更新時(shí)間:2026年01月07日 09:36:05   作者:Asia-Lee  
這篇文章主要為大家詳細(xì)介紹了使用Python計(jì)算代碼運(yùn)行時(shí)間的四種方法,文中的示例代碼講解詳細(xì),大家可以根據(jù)自己的需要進(jìn)行選擇

1、計(jì)算程序運(yùn)行CPU的時(shí)間

#python 的標(biāo)準(zhǔn)庫(kù)手冊(cè)推薦在任何情況下盡量使用time.clock().
#只計(jì)算了程序運(yùn)行CPU的時(shí)間,返回值是浮點(diǎn)數(shù)
import time
start =time.clock()
#中間寫上代碼塊
end = time.clock()
print('Running time: %s Seconds'%(end-start))

運(yùn)行結(jié)果如下

Running time: 2.26660703157 Seconds

2、計(jì)算CPU的總運(yùn)行時(shí)間

#該方法包含了其他程序使用CPU的時(shí)間,返回值是浮點(diǎn)數(shù)
import time
start=time.time()
#中間寫上代碼塊
end=time.time()
print('Running time: %s Seconds'%(end-start))

運(yùn)行結(jié)果

Running time: 4.90400004387 Seconds

3、方法三

#該方法包含了其他程序使用CPU的時(shí)間
import datetime
start=datetime.datetime.now()
#中間寫代碼塊
end=datetime.datetime.now()
print('Running time: %s Seconds'%(end-start))

運(yùn)行結(jié)果

Running time: 0:00:02.412000 Seconds

4、方法四

#在 Unix 系統(tǒng)中,建議使用 time.time(),在 Windows 系統(tǒng)中,建議使用 time.clock()
#實(shí)現(xiàn)跨平臺(tái)的精度性可以使用timeit.default_timer()
import timeit
start=timeit.default_timer()
#中間寫代碼塊
end=timeit.default_timer()
print('Running time: %s Seconds'%(end-start))

運(yùn)行結(jié)果

Running time: 2.31757675399 Seconds

注釋:以上四種代碼運(yùn)行環(huán)境是Win7系統(tǒng),都是在相同的代碼塊下運(yùn)行的,可以對(duì)比代碼運(yùn)行時(shí)間獲取windows系統(tǒng)下的最優(yōu)方法;對(duì)于其他系統(tǒng)可以進(jìn)行測(cè)試獲取最優(yōu)方法!

5、方法補(bǔ)充

在Python中,你可以使用內(nèi)置的time模塊來(lái)測(cè)試代碼的運(yùn)行時(shí)間。下面是一個(gè)例子:

import time

start_time = time.time()  # 獲取當(dāng)前時(shí)間

# 在這里放置你想要測(cè)試的代碼
for i in range(0, 1000000):
    pass

end_time = time.time()  # 代碼運(yùn)行后再次獲取當(dāng)前時(shí)間

execution_time = end_time - start_time  # 計(jì)算運(yùn)行時(shí)間

print(f"代碼運(yùn)行時(shí)間: {execution_time}秒")

這個(gè)代碼會(huì)首先記錄開(kāi)始時(shí)間,然后運(yùn)行一段代碼(在這個(gè)例子中是一個(gè)簡(jiǎn)單的for循環(huán)),然后再記錄結(jié)束時(shí)間。運(yùn)行時(shí)間就是結(jié)束時(shí)間減去開(kāi)始時(shí)間。

另外,如果你想要更精確的時(shí)間測(cè)量,你可以使用timeit模塊,它提供了一個(gè)簡(jiǎn)單的方法來(lái)計(jì)時(shí)小段Python代碼。它有命令行接口和Python庫(kù)接口。這是一個(gè)例子:

import timeit

start_time = timeit.default_timer()

# 在這里放置你想要測(cè)試的代碼
for i in range(0, 1000000):
    pass

end_time = timeit.default_timer()

print(f"代碼運(yùn)行時(shí)間: {end_time - start_time}秒")

timeit.default_timer()`在不同的平臺(tái)上會(huì)使用最精確的計(jì)時(shí)器。

示例

編寫一個(gè)Python腳本來(lái)計(jì)算每個(gè)函數(shù)運(yùn)行10000次的時(shí)間。

下面是一個(gè)示例代碼:

import timeit

# 定義你的函數(shù)
def function1():
    # 函數(shù)1的代碼
    pass

def function2():
    # 函數(shù)2的代碼
    pass

def function3():
    # 函數(shù)3的代碼
    pass

# 使用timeit來(lái)測(cè)量每個(gè)函數(shù)的執(zhí)行時(shí)間
print("Measuring execution time for function1:")
start_time = timeit.default_timer()
for _ in range(10000):
    function1()
end_time = timeit.default_timer()
print(f"Time taken by function1: {end_time - start_time} seconds")

print("Measuring execution time for function2:")
start_time = timeit.default_timer()
for _ in range(10000):
    function2()
end_time = timeit.default_timer()
print(f"Time taken by function2: {end_time - start_time} seconds")

print("Measuring execution time for function3:")
start_time = timeit.default_timer()
for _ in range(10000):
    function3()
end_time = timeit.default_timer()
print(f"Time taken by function3: {end_time - start_time} seconds")

然而,這種方法不是timeit模塊的最佳實(shí)踐,因?yàn)樗搜h(huán)的開(kāi)銷。更好的方法是使用timeit.repeat(),這樣timeit模塊會(huì)為你處理循環(huán),并且可以提供更準(zhǔn)確的計(jì)時(shí),排除其他不必要的開(kāi)銷。

下面是使用timeit.repeat()的改進(jìn)版本:

import timeit

# 定義你的函數(shù)
def function1():
    # 函數(shù)1的代碼
    pass

def function2():
    # 函數(shù)2的代碼
    pass

def function3():
    # 函數(shù)3的代碼
    pass

# 設(shè)置timeit參數(shù)
setup_code = """
from __main__ import function1, function2, function3
"""
stmt1 = "function1()"
stmt2 = "function2()"
stmt3 = "function3()"
number_of_runs = 10000
repeats = 3  # 重復(fù)測(cè)量次數(shù)以獲得更穩(wěn)定的結(jié)果

# 使用timeit.repeat來(lái)測(cè)量每個(gè)函數(shù)的執(zhí)行時(shí)間
print("Measuring execution time for function1:")
times1 = timeit.repeat(stmt=stmt1, setup=setup_code, repeat=repeats, number=number_of_runs)
print(f"Average time taken by function1: {min(times1)} seconds")

print("Measuring execution time for function2:")
times2 = timeit.repeat(stmt=stmt2, setup=setup_code, repeat=repeats, number=number_of_runs)
print(f"Average time taken by function2: {min(times2)} seconds")

print("Measuring execution time for function3:")
times3 = timeit.repeat(stmt=stmt3, setup=setup_code, repeat=repeats, number=number_of_runs)
print(f"Average time taken by function3: {min(times3)} seconds")

在這個(gè)例子中,setup_code導(dǎo)入了必要的函數(shù),stmt1stmt2stmt3是要執(zhí)行的語(yǔ)句(即函數(shù)調(diào)用),number_of_runs指定了每個(gè)函數(shù)要運(yùn)行的次數(shù),而repeats指定了每個(gè)測(cè)量要重復(fù)的次數(shù)。最后,我們?nèi)《啻螠y(cè)量的最小值作為最接近真實(shí)執(zhí)行時(shí)間的估計(jì)。

解釋timeit模塊中setup參數(shù)

setup參數(shù)接收一個(gè)字符串,該字符串包含在執(zhí)行要計(jì)時(shí)的語(yǔ)句之前需要運(yùn)行的代碼。告訴timeit如何設(shè)置環(huán)境以便能夠運(yùn)行這段代碼。這通常包括導(dǎo)入必要的模塊或定義要使用的函數(shù)和變量。

上述代碼片段中:

setup_code = """
from __main__ import function1, function2, function3
"""

setup_code是一個(gè)多行字符串,它告訴timeit模塊從__main__模塊中導(dǎo)入function1、function2function3這三個(gè)函數(shù)。這里的__main__模塊是指當(dāng)前正在運(yùn)行的Python腳本,也就是包含這些函數(shù)定義的腳本。

timeit模塊將在一個(gè)單獨(dú)的命名空間中執(zhí)行setup代碼,以確保測(cè)量的是純粹的函數(shù)執(zhí)行時(shí)間,而不受其他全局變量的影響。通過(guò)在setup中導(dǎo)入函數(shù),你確保了timeit能夠訪問(wèn)并正確調(diào)用這些函數(shù)。

簡(jiǎn)而言之,from __main__ import function1, function2, function3這行代碼的目的是讓timeit知道它需要測(cè)量的函數(shù)在哪里,并確保這些函數(shù)在測(cè)量過(guò)程中是可用的。

到此這篇關(guān)于Python計(jì)算代碼運(yùn)行時(shí)間的四種方法的文章就介紹到這了,更多相關(guān)Python計(jì)算代碼運(yùn)行時(shí)間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python3+PyQt5自定義視圖詳解

    python3+PyQt5自定義視圖詳解

    這篇文章主要為大家詳細(xì)介紹了python3+PyQt5自定義視圖的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python中Excel圖片插入、提取與壓縮操作的完整指南

    Python中Excel圖片插入、提取與壓縮操作的完整指南

    通過(guò) Python,我們可以實(shí)現(xiàn)對(duì) Excel 中圖片的自動(dòng)化管理,這不僅能節(jié)省大量人工操作時(shí)間,還能確保圖片布局一致、美觀,同時(shí)支持批量處理、圖片壓縮和格式優(yōu)化,下面小編就和大家介紹一下具體的步驟吧
    2026-03-03
  • Python中cv2.Canny() 函數(shù)使用方法

    Python中cv2.Canny() 函數(shù)使用方法

    cv2.Canny() 函數(shù)是 OpenCV 中的邊緣檢測(cè)函數(shù)之一,用于檢測(cè)圖像的邊緣,它的基本原理是通過(guò)計(jì)算圖像中每個(gè)像素點(diǎn)的梯度值來(lái)檢測(cè)邊緣,本文通過(guò)示例代碼介紹Python中cv2.Canny() 函數(shù)用法,需要的朋友參考下吧
    2023-07-07
  • Python環(huán)境變量配置超詳細(xì)教程(小白也能輕松搞定)

    Python環(huán)境變量配置超詳細(xì)教程(小白也能輕松搞定)

    對(duì)于剛接觸Python的用戶來(lái)說(shuō),配置Python環(huán)境變量可能是一個(gè)令人頭疼的問(wèn)題,這篇文章主要介紹了Python環(huán)境變量配置的相關(guān)資料,通過(guò)文中介紹的方法小白也能輕松搞定,需要的朋友可以參考下
    2025-10-10
  • TensorFlow人工智能學(xué)習(xí)按索引取數(shù)據(jù)及維度變換詳解

    TensorFlow人工智能學(xué)習(xí)按索引取數(shù)據(jù)及維度變換詳解

    這篇文章主要為大家介紹了TensorFlow人工智能學(xué)習(xí)按索引取數(shù)據(jù)及維度變換的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • python實(shí)現(xiàn)數(shù)組求和與平均值

    python實(shí)現(xiàn)數(shù)組求和與平均值

    這篇文章主要介紹了python實(shí)現(xiàn)數(shù)組求和與平均值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python環(huán)境搭建之OpenCV的步驟方法

    Python環(huán)境搭建之OpenCV的步驟方法

    本篇文章主要介紹了Python環(huán)境搭建之OpenCV的步驟方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • Python實(shí)現(xiàn)簡(jiǎn)單字典樹(shù)的方法

    Python實(shí)現(xiàn)簡(jiǎn)單字典樹(shù)的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單字典樹(shù)的方法,實(shí)例分析了Python字典樹(shù)的定義、實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2016-04-04
  • PyTorch基礎(chǔ)之torch.nn.CrossEntropyLoss交叉熵?fù)p失

    PyTorch基礎(chǔ)之torch.nn.CrossEntropyLoss交叉熵?fù)p失

    這篇文章主要介紹了PyTorch基礎(chǔ)之torch.nn.CrossEntropyLoss交叉熵?fù)p失講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Keras 如何修改圖片通道的順序

    Keras 如何修改圖片通道的順序

    這篇文章主要介紹了Keras 修改圖片通道順序的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05

最新評(píng)論

山西省| 那坡县| 北流市| 浦城县| 锡林浩特市| 綦江县| 玛纳斯县| 亳州市| 柳河县| 宣化县| 都兰县| 自治县| 崇文区| 平凉市| 图片| 攀枝花市| 潮安县| 荆门市| 丽水市| 长丰县| 聂拉木县| 葵青区| 陇川县| 通河县| 彰武县| 定边县| 茶陵县| 铁岭市| 洛阳市| 丰镇市| 修武县| 汾西县| 贵溪市| 安宁市| 江西省| 平凉市| 卢湾区| 阿合奇县| 淳安县| 苗栗市| 任丘市|