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

python 統(tǒng)計代碼耗時的幾種方法分享

 更新時間:2021年04月02日 14:23:31   作者:吾非同  
本文實例講述了Python中統(tǒng)計代碼片段、函數(shù)運(yùn)行耗時的幾種方法,分享給大家,僅供參考。

時間戳相減

在代碼執(zhí)行前后各記錄一個時間點,兩個時間戳相減即程序運(yùn)行耗時。

獲取時間戳time.time()

import time

start_time = time.time()
sum = 0
for i in range(100000000):
    sum += i
print(sum)

end_time = time.time()
print("耗時: {:.2f}秒".format(end_time - start_time))

輸出:
4999999950000000
耗時: 10.53秒

獲取當(dāng)前日期 datetime.datetime.now()

import datetime

start_time = datetime.datetime.now()
sum = 0
for i in range(100000000):
    sum += i
print(sum)

end_time = datetime.datetime.now()
print("耗時: {}秒".format(end_time - start_time))

裝飾器

裝飾器是一個裝飾函數(shù)的函數(shù),能夠在不改變函數(shù)源碼和函數(shù)調(diào)用方式的情況下給函數(shù)增加新的功能。很多時候統(tǒng)計函數(shù)的耗時,可以使用裝飾器實現(xiàn)。

import time

def get_time(f):

    def inner(*arg,**kwarg):
        s_time = time.time()
        res = f(*arg,**kwarg)
        e_time = time.time()
        print('耗時:{}秒'.format(e_time - s_time))
        return res
    return inner

@get_time
def test():
    time.sleep(2)  # 模擬運(yùn)行2s

test()

輸出:
耗時:2.000781536102295秒

timeit模塊

timeit 模塊提供了測量 Python 小段代碼執(zhí)行時間的方法,可以在命令行界面直接使用,也可以通過導(dǎo)入模塊進(jìn)行調(diào)用。

語句執(zhí)行 number 次的時間

#導(dǎo)入timeit.timeit
from timeit import timeit
#看x=1的執(zhí)行一次的時間(number可以省略,缺省為1000000)
t1 = timeit('x=1', number=1)
print(t1)
#一個列表生成器的執(zhí)行時間,執(zhí)行10000次:
t2 = timeit('[i for i in range(100) if i%2==0]', number=10000)
print(t2)

輸出:
4.0000000001150227e-07
0.04841430000000002

計算函數(shù)的執(zhí)行時間

from timeit import timeit
def func(a):
    sum = 0
    for i in range(a):
        sum += i
    return sum

# timeit(函數(shù)名_字符串,運(yùn)行環(huán)境_字符串,number=運(yùn)行次數(shù))
t = timeit('func(10000000)', 'from __main__ import func', number=1)
print(t)
輸出:
0.4887406

重復(fù)調(diào)用 timeit()

repeat() 方法相當(dāng)于持續(xù)多次調(diào)用 timeit() 方法并將結(jié)果返回為一個列表。repeat 參數(shù)指定重復(fù)的次數(shù),number 參數(shù)傳遞給 timeit() 方法的 number 參數(shù)。

import timeit
def func(a):
    sum = 0
    for i in range(a):
        sum += i
    return sum

# timeit(函數(shù)名_字符串,運(yùn)行環(huán)境_字符串,number=運(yùn)行次數(shù),repeat=重復(fù)次數(shù),repeat=5)
t = timeit.repeat('func(100000)', 'from __main__ import func', number=100, repeat=5)
print(t)

cProfile性能分析工具

cProfile(語言編寫的測試模塊)是一個標(biāo)準(zhǔn)庫內(nèi)建的性能分析工具,可以在標(biāo)準(zhǔn)輸出中看到每一個函數(shù)被調(diào)用的次數(shù)和運(yùn)行的時間,從而找到程序的性能瓶頸,從而有針對性的進(jìn)行性能優(yōu)化。

Python代碼性能分析之cProfile

import cProfile
def func(a):
    sum = 0
    for i in range(a):
        sum += i
    return sum
if __name__ == '__main__':
    cProfile.run("func(10000000)")

以上就是python 統(tǒng)計代碼耗時的幾種方法分享的詳細(xì)內(nèi)容,更多關(guān)于python 統(tǒng)計代碼耗時的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python的jinja2模板深入淺出地解析

    python的jinja2模板深入淺出地解析

    Python模板,全稱為“Jinja2 Template”,是Python語言中的一種模板引擎。在web應(yīng)用中,模板一般用于生成頁面或其他輸出格式。Python的模板引擎為程序員提供了一種非常方便的方式來構(gòu)建動態(tài)內(nèi)容,強(qiáng)制執(zhí)行代碼結(jié)構(gòu),并允許從數(shù)據(jù)中提取特定的信息。Jinja2在Python社區(qū)
    2023-06-06
  • Python一鍵生成核酸檢測日歷的操作代碼

    Python一鍵生成核酸檢測日歷的操作代碼

    這篇文章主要介紹了Python一鍵生成核酸檢測日歷,本文以深圳為例,結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • python制作小說爬蟲實錄

    python制作小說爬蟲實錄

    本文給大家介紹的是作者所寫的第一個爬蟲程序的全過程,從構(gòu)思到思路到程序的編寫,非常的細(xì)致,有需要的小伙伴可以參考下
    2017-08-08
  • Python Web框架Tornado運(yùn)行和部署

    Python Web框架Tornado運(yùn)行和部署

    這篇文章主要為大家詳細(xì)介紹了Python Web框架Tornado運(yùn)行和部署的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 在Django中自定義filter并在template中的使用詳解

    在Django中自定義filter并在template中的使用詳解

    這篇文章主要介紹了在Django中自定義filter并在template中的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python3中celery異步框架簡單使用+守護(hù)進(jìn)程方式啟動

    python3中celery異步框架簡單使用+守護(hù)進(jìn)程方式啟動

    這篇文章主要介紹了python3中celery異步框架簡單使用+守護(hù)進(jìn)程方式啟動,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 接口自動化多層嵌套json數(shù)據(jù)處理代碼實例

    接口自動化多層嵌套json數(shù)據(jù)處理代碼實例

    這篇文章主要介紹了接口自動化多層嵌套json數(shù)據(jù)處理代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 利用Python將多張圖片合成視頻的實現(xiàn)

    利用Python將多張圖片合成視頻的實現(xiàn)

    這篇文章主要介紹了利用Python將多張圖片合成視頻的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • matplotlib繪制多子圖共享鼠標(biāo)光標(biāo)的方法示例

    matplotlib繪制多子圖共享鼠標(biāo)光標(biāo)的方法示例

    這篇文章主要介紹了matplotlib繪制多子圖共享鼠標(biāo)光標(biāo)的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python中如何替換字典中的值

    Python中如何替換字典中的值

    這篇文章主要介紹了Python中替換字典中的值,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03

最新評論

东安县| 库尔勒市| 大安市| 陆河县| 新安县| 华蓥市| 来安县| 泌阳县| 固镇县| 新竹市| 葫芦岛市| 新乡县| 怀集县| 左权县| 罗江县| 湖北省| 林口县| 土默特右旗| 灌阳县| 德州市| 松溪县| 黄浦区| 玉山县| 茶陵县| 抚顺市| 濮阳市| 金乡县| 兴仁县| 龙陵县| 丹阳市| 瑞安市| 博白县| 南漳县| 惠水县| 沁水县| 密山市| 修水县| 将乐县| 岗巴县| 巴彦县| 保康县|