欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python性能檢測(cè)工具函數(shù)運(yùn)行內(nèi)存及運(yùn)行時(shí)間

 更新時(shí)間:2022年05月07日 16:34:34   作者:Python集中營(yíng)  
這篇文章主要介紹了python性能檢測(cè)工具函數(shù)運(yùn)行內(nèi)存及運(yùn)行時(shí)間,python雖然是一門慢語言,但是也有著比較多的性能檢測(cè)工具來幫助我們優(yōu)化程序的運(yùn)行效率,下文小編給大家分享五個(gè)性能檢測(cè)工具,需要的朋友可以參考一下

前言:

python雖然是一門'慢語言',但是也有著比較多的性能檢測(cè)工具來幫助我們優(yōu)化程序的運(yùn)行效率。這里總結(jié)了五個(gè)比較好的python性能檢測(cè)工具,包括內(nèi)存使用、運(yùn)行時(shí)間、執(zhí)行次數(shù)等方面。

首先,來編寫一個(gè)基礎(chǔ)的python函數(shù)用于在后面的各種性能測(cè)試。

def base_func():
    for n in range(10000):
        print('當(dāng)前n的值是:{}'.format(n))

1、memory_profiler進(jìn)程監(jiān)視

memory_profiler是python的非標(biāo)準(zhǔn)庫,所以這里采用pip的方式進(jìn)行安裝。
它能夠監(jiān)視進(jìn)程、了解內(nèi)存使用等情況。

pip install memory_profiler

安裝好memory_profiler庫以后,直接使用注解的方式進(jìn)行測(cè)試

from memory_profiler import profile
@profile
def base_func1():
    for n in range(10000):
        print('當(dāng)前n的值是:{}'.format(n))
base_func1()
# Line #    Mem usage    Increment  Occurrences   Line Contents
# =============================================================
#     28     45.3 MiB     45.3 MiB           1   @profile
#     29                                         def base_func():
#     30     45.3 MiB      0.0 MiB       10001       for n in range(10000):
#     31     45.3 MiB      0.0 MiB       10000           print('當(dāng)前n的值是:{}'.format(n))

從返回的數(shù)據(jù)結(jié)果來看,執(zhí)行當(dāng)前函數(shù)使用了45.3 MiB的內(nèi)存。

2、timeit 時(shí)間使用情況

timeit是python的內(nèi)置模塊,可以測(cè)試單元格的代碼運(yùn)行時(shí)間,由于是內(nèi)置模塊所以并不需要單獨(dú)安裝。

import timeit
def base_func2():
    for n in range(10000):
        print('當(dāng)前n的值是:{}'.format(n))
res = timeit.timeit(base_func2,number=5)
print('當(dāng)前的函數(shù)的運(yùn)行時(shí)間是:{}'.format(res))

當(dāng)前的函數(shù)的運(yùn)行時(shí)間是:0.9675800999999993

根據(jù)上面函數(shù)的運(yùn)行返回結(jié)果,函數(shù)的運(yùn)行時(shí)間是0.96秒。

3、line_profiler行代碼運(yùn)行時(shí)間檢測(cè)

如果在只需要檢測(cè)函數(shù)的局部運(yùn)行時(shí)間的話就可以使用line_profiler了,它可以檢測(cè)出每行代碼的運(yùn)行時(shí)間。
line_profiler是python的非標(biāo)準(zhǔn)庫,使用的使用pip的方式安裝一下。

pip install line_profiler

最簡(jiǎn)便的使用方式直接將需要測(cè)試的函數(shù)加入即可。

def base_func3():
    for n in range(10000):
        print('當(dāng)前n的值是:{}'.format(n))
from line_profiler import LineProfiler
lp = LineProfiler()
lp_wrap = lp(base_func3)
lp_wrap()

lp.print_stats()

# Line #      Hits         Time  Per Hit   % Time  Line Contents
# ==============================================================
#     72                                           def base_func3():
#     73     10001     162738.0     16.3      4.8      for n in range(10000):
#     74     10000    3207772.0    320.8     95.2          print('當(dāng)前n的值是:{}'.format(n))

從運(yùn)行結(jié)果可以看出每行代碼的運(yùn)行時(shí)間及比例,注意這里的時(shí)間單位是微妙。

4、heartrate可視化檢測(cè)工具

heartrate最值得推薦的是可以在網(wǎng)頁上面向檢測(cè)心率一樣檢測(cè)程序的執(zhí)行過程,同時(shí),
他還是非標(biāo)準(zhǔn)庫,使用pip的方式進(jìn)行安裝。

# pip install heartrate
import heartrate
heartrate.trace(browser=True)
def base_func4():
    for n in range(10000):
        print('當(dāng)前n的值是:{}'.format(n))

運(yùn)行以后,控制臺(tái)打印如下日志:

#  * Serving Flask app "heartrate.core" (lazy loading)
#  * Environment: production
#    WARNING: This is a development server. Do not use it in a production deployment.
#    Use a production WSGI server instead.
#  * Debug mode: off

并且自動(dòng)打開瀏覽器地址:http://127.0.0.1:9999

file

到此這篇關(guān)于python性能檢測(cè)工具函數(shù)運(yùn)行內(nèi)存及運(yùn)行時(shí)間的文章就介紹到這了,更多相關(guān)python性能檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)使用遺傳算法進(jìn)行圖片擬合

    python實(shí)現(xiàn)使用遺傳算法進(jìn)行圖片擬合

    最近做項(xiàng)目需要圖像擬合,本文主要介紹了python實(shí)現(xiàn)使用遺傳算法進(jìn)行圖片擬合,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • python生成器/yield協(xié)程/gevent寫簡(jiǎn)單的圖片下載器功能示例

    python生成器/yield協(xié)程/gevent寫簡(jiǎn)單的圖片下載器功能示例

    這篇文章主要介紹了python生成器/yield協(xié)程/gevent寫簡(jiǎn)單的圖片下載器功能,結(jié)合實(shí)例形式分析了python生成器、yield協(xié)程與gevent圖片下載器相關(guān)功能定義與使用技巧,需要的朋友可以參考下
    2019-10-10
  • 解析Anaconda創(chuàng)建python虛擬環(huán)境的問題

    解析Anaconda創(chuàng)建python虛擬環(huán)境的問題

    這篇文章主要介紹了Anaconda創(chuàng)建python虛擬環(huán)境,包括虛擬環(huán)境管理、虛擬環(huán)境中python包管理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 如何用用Python將地址標(biāo)記在地圖上

    如何用用Python將地址標(biāo)記在地圖上

    這篇文章主要介紹了如何用用Python將地址標(biāo)記在地圖上,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-02-02
  • python向json中追加數(shù)據(jù)的兩種方法總結(jié)

    python向json中追加數(shù)據(jù)的兩種方法總結(jié)

    JSON用來存儲(chǔ)和交換文本信息,比xml更小/更快/更易解析,下面這篇文章主要給大家介紹了關(guān)于python向json中追加數(shù)據(jù)的兩種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Python爬蟲簡(jiǎn)單運(yùn)用爬取代理IP的實(shí)現(xiàn)

    Python爬蟲簡(jiǎn)單運(yùn)用爬取代理IP的實(shí)現(xiàn)

    這篇文章主要介紹了Python爬蟲簡(jiǎn)單運(yùn)用爬取代理IP的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python設(shè)計(jì)模式之組合模式原理與用法實(shí)例分析

    Python設(shè)計(jì)模式之組合模式原理與用法實(shí)例分析

    這篇文章主要介紹了Python設(shè)計(jì)模式之組合模式,結(jié)合具體實(shí)例形式分析了Python組合模式的相關(guān)概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-01-01
  • conda創(chuàng)建環(huán)境、安裝包、刪除環(huán)境步驟詳細(xì)記錄

    conda創(chuàng)建環(huán)境、安裝包、刪除環(huán)境步驟詳細(xì)記錄

    對(duì)于生信工作者,有一個(gè)方便可用的環(huán)境可以極大地方便我們開展分析,conda可以讓我們?cè)诜莚oot的情況下較為方便地切換不同的工作環(huán)境,下面這篇文章主要給大家介紹了關(guān)于conda創(chuàng)建環(huán)境、安裝包、刪除環(huán)境步驟的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 關(guān)于使用pyqt彈出消息提示框的問題

    關(guān)于使用pyqt彈出消息提示框的問題

    PyQt是一個(gè)創(chuàng)建GUI應(yīng)用程序的工具包。它是Python編程語言和Qt庫的成功融合。Qt庫是最強(qiáng)大的庫之一。PyQt是由Phil?Thompson?開發(fā)。接下來通過本文給大家介紹下使用pyqt彈出消息提示框的問題,需要的朋友可以參考下
    2022-01-01
  • Python中的asyncio代碼詳解

    Python中的asyncio代碼詳解

    asyncio 是用來編寫 并發(fā) 代碼的庫,使用 async/await 語法。 asyncio 被用作多個(gè)提供高性能 Python 異步框架的基礎(chǔ),包括網(wǎng)絡(luò)和網(wǎng)站服務(wù),數(shù)據(jù)庫連接庫,分布式任務(wù)隊(duì)列等等。這篇文章主要介紹了Python中的asyncio,需要的朋友可以參考下
    2019-06-06

最新評(píng)論