Pythonパフォーマンス分析ツールpyinstrumentの説明

I.はじめに

プログラムのパフォーマンスも非常に重要な指標です。多くの場合、コードの実行速度が速くなり、テクノロジーをより適切に反映できます。最近、多くの小規模なパートナーが、実行時間を手動で印刷する方法を使用して、パフォーマンス分析のプロセスで時間のかかるコードをカウントしていることがわかりました。

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

出力結果

0:00:00.377766

この方法は非常に高速に使用できますが、コードの各行の実行時間をカウントし、視覚的なレポートなどのより完全なパフォーマンス分析を生成する必要がある場合は、少し無力です。現時点では、PythonのサードパーティライブラリPyinstrumentをパフォーマンス分析に使用できます。



2.Pyinstrumentの使用

PyinstrumentはPythonアナライザーです。プロファイラーは、コードを最適化するのに役立つツールです。コードを高速化します。最大速度ブーストを取得します。
Pyinstrumentの公式ドキュメント:pyinstrument

Pyinstrumentのインストール:

pip install pyinstrument


1.例

最初に示した例では、Pyinstrumentを使用して実装されたコードは次のとおりです。

文末添加个人VX,获取资料和免费答疑

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

出力結果

  _     ._   __/__   _ _  _  _ _/_   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  #执行总耗时
└─ 0.385 <listcomp>  test2.py:7 #单行代码耗时

印刷される情報には、記録時間、スレッド数、合計時間、1行のコード時間、CPU実行時間などの情報が含まれます。


複数行のコード分析の場合の使用の効果(それぞれ、1,000万の長さ、1億の長さ、および2億の長さのリストを生成するのに時間がかかります):

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()

出力結果

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にパラメータプロファイルを追加できます。
ここに画像の説明を挿入


Pyinstrumentは、フラスコと非同期コードのパフォーマンス分析もサポートしています。詳細については、学習用の公式ドキュメントを確認してください。
Pyinstrumentには、使用できる豊富なAPIも用意されており、公式Webサイトのドキュメントに詳細な紹介があります:https ://pyinstrument.readthedocs.io/en/latest/reference.html


3. PyinstrumentとcProfile(Python独自のパフォーマンスアナライザー)の違い

公式ドキュメントの説明によると、PyinstrumentのシステムオーバーヘッドはcProfileなどのトレースアナライザーのオーバーヘッドよりもはるかに小さく、プロファイラーへの多数の呼び出しによりテスト結果が歪む可能性があります。
ここに画像の説明を挿入




以下の学習資料と無料のQ&Aを入手してください

おすすめ

転載: blog.csdn.net/momoda118/article/details/122805206