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

Python中性能分析利器pyinstrument詳細(xì)講解

 更新時(shí)間:2022年02月07日 15:25:55   作者:曲鳥  
大家好,本篇文章主要講的是Python中性能分析利器pyinstrument詳細(xì)講解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下

一、前言

程序的性能也是非常關(guān)鍵的指標(biāo),很多時(shí)候你的代碼跑的快,更能夠體現(xiàn)你的技術(shù)。最近發(fā)現(xiàn)很多小伙伴在性能分析的過程中都是手動(dòng)打印運(yùn)行時(shí)間的方式來統(tǒng)計(jì)代碼耗時(shí)的:

import datetime
start=datetime.datetime.now()
b=[i for i in range(10000000)]  # 生成長度為一千萬的列表
end=datetime.datetime.now()
print(end-start)

輸出結(jié)果

0:00:00.377766

這種方法使用很快捷,但需要統(tǒng)計(jì)每行代碼的執(zhí)行時(shí)間,生成可視化的報(bào)告等更完善的性能分析時(shí)就有點(diǎn)力不從心了。這個(gè)時(shí)候可以使用python的第三方庫Pyinstrument來進(jìn)行性能分析。

二、Pyinstrument使用

Pyinstrument 是一個(gè) Python 分析器。分析器是一種幫助您優(yōu)化代碼的工具 - 使其更快。要獲得最大的速度提升。
Pyinstrument 官方文檔:pyinstrument

Pyinstrument 安裝:

pip install pyinstrument

1. 舉例

對(duì)于最開始我們舉的例子,使用Pyinstrument實(shí)現(xiàn)的代碼如下:

文末添加個(gè)人VX,獲取資料和免費(fèi)答疑

from pyinstrument import Profiler
profiler=Profiler()
profiler.start()
b=[i for i in range(10000000)]# 生成長度為一千萬的列表
profiler.stop()
profiler.print()

輸出結(jié)果

  _     ._   __/__   _ _  _  _ _/_   Recorded: 10:39:54  Samples:  1
 /_//_/// /_\ / //_// / //_'/ //     Duration: 0.385     CPU time: 0.391
/   _/                      v4.1.1
Program: D:/code/server/aitestdemo/test2.py
0.385 <module>  test2.py:2  #執(zhí)行總耗時(shí)
└─ 0.385 <listcomp>  test2.py:7 #單行代碼耗時(shí)

打印的信息包含了記錄時(shí)間、線程數(shù)、總耗時(shí)、單行代碼耗時(shí)、CPU執(zhí)行時(shí)間等信息。

在多行代碼分析的情況下的使用效果(分別統(tǒng)計(jì)生成一千萬長度、一億長度、兩億長度的列表耗時(shí)):

from pyinstrument import Profiler

profiler = Profiler()
profiler.start()
a = [i for i in range(10000000)]  # 生成長度為一千萬的列表
b = [i for i in range(100000000)]  # 生成長度為一億的列表
c = [i for i in range(200000000)]  # 生成長度為十億的列表
profiler.stop()
profiler.print()

輸出結(jié)果

Program: D:/code/server/aitestdemo/test2.py
16.686 <module>  test2.py:1
├─ 12.178 <listcomp>  test2.py:9
├─ 4.147 <listcomp>  test2.py:8
└─ 0.358 <listcomp>  test2.py:7

2. Pyinstrument分析django代碼

使用Pyinstrument分析 Django 代碼非常簡單,只需要在 Django 的配置文件settings.pyMIDDLEWARE 中添加如下配置:

MIDDLEWARE = [
	...
    'pyinstrument.middleware.ProfilerMiddleware',
	...
]

然后就可以在 url 上加一個(gè)參數(shù) profile 就可以:

在這里插入圖片描述

Pyinstrument還支持flask、異步代碼的性能分析,具體可以查看官方文檔進(jìn)行學(xué)習(xí)。
Pyinstrument也提供了豐富的api供我們使用,官網(wǎng)文檔有詳細(xì)的介紹:https://pyinstrument.readthedocs.io/en/latest/reference.html

三、Pyinstrument與cProfile(python自帶性能分析器)的不同

根據(jù)官方文檔的描述來看,Pyinstrument的系統(tǒng)開銷會(huì)比cProfile 這類跟蹤分析器小很多,cProfile由于大量調(diào)用探查器,可能會(huì)扭曲測試結(jié)果:

在這里插入圖片描述

總結(jié)

到此這篇關(guān)于Python中性能分析利器pyinstrument詳細(xì)講解的文章就介紹到這了,更多相關(guān)Python性能分析利器pyinstrument內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)五子棋雙人對(duì)弈

    python實(shí)現(xiàn)五子棋雙人對(duì)弈

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)五子棋雙人對(duì)弈,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python的字典和列表的使用中一些需要注意的地方

    Python的字典和列表的使用中一些需要注意的地方

    這篇文章主要介紹了Python的字典和列表的使用中一些需要注意的地方,字典和列表的使用是Python學(xué)習(xí)當(dāng)中的基本功,需要的朋友可以參考下
    2015-04-04
  • python3 kmp 字符串匹配的方法

    python3 kmp 字符串匹配的方法

    這篇文章主要介紹了python3 kmp 字符串匹配的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • python中三種高階函數(shù)(map,reduce,filter)詳解

    python中三種高階函數(shù)(map,reduce,filter)詳解

    在Python中,函數(shù)其實(shí)也是一種數(shù)據(jù)類型,今天重點(diǎn)給大家介紹python中三種高階函數(shù)(map,reduce,filter)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-10-10
  • python編寫的最短路徑算法

    python編寫的最短路徑算法

    本文給大家分享的是python 無向圖最短路徑算法:請(qǐng)各位大大指教,繼續(xù)改進(jìn)。(修改了中文字符串,使py2exe中文沒煩惱),需要的朋友可以參考下
    2015-03-03
  • Python3如何跳過第一行讀取文件

    Python3如何跳過第一行讀取文件

    這篇文章主要介紹了Python3如何跳過第一行讀取文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • django用戶注冊(cè)、登錄、注銷和用戶擴(kuò)展的示例

    django用戶注冊(cè)、登錄、注銷和用戶擴(kuò)展的示例

    本篇文章主要介紹了django用戶注冊(cè)、登錄、注銷和用戶擴(kuò)展的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • python 動(dòng)態(tài)繪制愛心的示例

    python 動(dòng)態(tài)繪制愛心的示例

    這篇文章主要介紹了python 動(dòng)態(tài)繪制愛心的示例,幫助大家利用python繪制圖像,感興趣的朋友可以了解下
    2020-09-09
  • Python 實(shí)現(xiàn)大整數(shù)乘法算法的示例代碼

    Python 實(shí)現(xiàn)大整數(shù)乘法算法的示例代碼

    這篇文章主要介紹了Python 實(shí)現(xiàn)大整數(shù)乘法算法的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 基于Python實(shí)現(xiàn)煙花效果的示例代碼

    基于Python實(shí)現(xiàn)煙花效果的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Python制作出煙花的效果,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-06-06

最新評(píng)論