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

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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文向您詳細(xì)介紹指令 python -m pip install的用法和功能

    一文向您詳細(xì)介紹指令 python -m pip install的用法和功能

    通過本文的介紹,我們詳細(xì)了解了python -m pip install命令的用法和功能,從基本用法到安裝特定版本的包、從其他源安裝包、升級(jí)和卸載包,再到使用requirements.txt管理依賴,我們逐步深入了解了pip的強(qiáng)大功能,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • python requests.post帶head和body的實(shí)例

    python requests.post帶head和body的實(shí)例

    今天小編就為大家分享一篇python requests.post帶head和body的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python實(shí)現(xiàn)直播推流效果

    Python實(shí)現(xiàn)直播推流效果

    這篇文章主要介紹了Python實(shí)現(xiàn)直播推流效果,主要是通過opencv讀取視頻對(duì)視頻分割為幀,本文通過實(shí)例代碼講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • python制作簡單計(jì)算器功能

    python制作簡單計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了python制作簡單計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Python字符串對(duì)象實(shí)現(xiàn)原理詳解

    Python字符串對(duì)象實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了Python字符串對(duì)象實(shí)現(xiàn)原理詳解,在Python世界中將對(duì)象分為兩種:一種是定長對(duì)象,比如整數(shù),整數(shù)對(duì)象定義的時(shí)候就能確定它所占用的內(nèi)存空間大小,另一種是變長對(duì)象,在對(duì)象定義時(shí)并不知道是多少,需要的朋友可以參考下
    2019-07-07
  • 利用python實(shí)現(xiàn)逐步回歸

    利用python實(shí)現(xiàn)逐步回歸

    今天小編就為大家分享一篇利用python實(shí)現(xiàn)逐步回歸,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • pytorch實(shí)現(xiàn)多項(xiàng)式回歸

    pytorch實(shí)現(xiàn)多項(xiàng)式回歸

    這篇文章主要為大家詳細(xì)介紹了pytorch實(shí)現(xiàn)多項(xiàng)式回歸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Python實(shí)現(xiàn)的rsa加密算法詳解

    Python實(shí)現(xiàn)的rsa加密算法詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)的rsa加密算法,結(jié)合完整實(shí)例形式分析了Python實(shí)現(xiàn)rsa加密算法的原理、步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • python如何去除字符串兩端的引號(hào)

    python如何去除字符串兩端的引號(hào)

    這篇文章主要介紹了python如何去除字符串兩端的引號(hào)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 使用Python分割并高效處理PDF大文件詳解

    使用Python分割并高效處理PDF大文件詳解

    在處理大型PDF文件時(shí),將它們分解成更小、更易于管理的塊通常是有益的,本文將為大家介紹一下如何使用Python和為Unstructured.io庫實(shí)現(xiàn)分割PDF吧
    2025-03-03

最新評(píng)論

唐山市| 修武县| 灵丘县| 晋宁县| 安达市| 太原市| 青冈县| 潼关县| 临洮县| 赞皇县| 南阳市| 乐业县| 宜丰县| 巫山县| 闽清县| 南开区| 金川县| 武隆县| 杭州市| 石棉县| 桐城市| 丰都县| 龙陵县| 潞城市| 阿巴嘎旗| 油尖旺区| 海口市| 屏东县| 柏乡县| 虞城县| 贵阳市| 隆德县| 内丘县| 天峨县| 绥江县| 韶关市| 全州县| 广元市| 海丰县| 南岸区| 博爱县|