Memray は、ブルームバーグによって開発されたオープン ソースのメモリ プロファイラーです。オープンソースになってから 1 か月以上が経過し、すでに 840,000 個以上のスターを獲得しており、まさにスター プロジェクトとなっています。今日は、この Python メモリ分析ツールを皆さんにお勧めします。
Memray は、Python コード、ネイティブ拡張モジュール、および Python インタープリター自体のメモリ割り当てを追跡でき、Python コードのメモリ使用量の分析に役立つさまざまな種類のレポートを生成できます。
-
ツールの主な機能:
-
各関数呼び出しを追跡し、呼び出しスタックを正確に追跡します。
-
C/C++ ライブラリ呼び出しをトレースできる
-
分析は非常に高速です
-
メモリデータを収集し、各種アイコンを出力
-
Python スレッドの使用
-
ネイティブスレッドを操作する
-
解決に役立つ問題:
-
アプリケーションのメモリ割り当てを分析して、メモリ使用量が高くなる原因を発見します。
-
メモリリークの原因を見つける
-
大量のメモリ割り当てを引き起こすコードのホットスポットを見つける
►►► メモリアレイのインストール
-
環境要件: python3.7+以降、Linuxシステム(Linuxシステムのみサポート)
-
インストール: pip3 install memray
►►► メモリ使用量
メモリ使用法のヘルプ
python3 -m memray --help
パラメータ |
効果 |
走る |
指定されたアプリケーションを実行し、メモリ使用量を追跡します |
フレームグラフ |
HTML レポートではフレーム グラフを使用してメモリ使用量を表示します |
テーブル |
HTMLレポートファイルでメモリ解析状況を表で表示 |
ライブ |
リアルタイム画面表示を使用してさまざまなメモリ使用量を表示します |
木 |
ターミナルではメモリ使用量をツリー構造で表示します |
解析する |
デバッグモードを使用して各行のメモリ使用量を表示する |
まとめ |
端末操作中のメモリ使用量プロファイルを要約する |
統計 |
端末のメモリ使用量を詳細に表示する |
►►► run コマンドの使用法
-
python3 -m memray run --help ヘルプを表示
パラメータ |
効果 |
-oOUTPU、--出力 OUTPUT |
結果を出力する場所を指定する |
- ライブ |
ライブ追跡セッションモードを開始する |
--ライブリモート |
ライブ追跡セッションを開始し、クライアントが接続するのを待ちます |
--ライブポート LIVE_PORT、 -p ライブポート |
リアルタイム トレースを開始するときに使用するポート |
- ネイティブ |
C/C++ スタックのトレース |
--フォローフォーク |
スクリプトによってフォークされた子プロセスの割り当てを追跡する |
--trace-python-allocators |
pymalloc アロケータの割り当てを記録する |
-q、--静か |
実行時にトレース固有の出力は表示されません。 |
-f、--force |
既存のファイルの強制再購入 |
--終了時に圧縮 |
追跡が完了した後、lz4 を使用して生成されたファイルを圧縮します |
--圧縮なし |
lz4 圧縮なしで生成されたファイル |
-c |
文字列として渡されるプログラム |
-m |
ライブラリモジュールをスクリプトとして実行する |
-
python3 -m memray run xxx.py は、特定の py ファイルのメモリ使用量を直接解析し、カレントパス下に「memray-py ファイル名.プロセス ID.bin」のメモリ使用量記録ファイルが生成されます。もちろん、 -o outFiPath の後に出力パスを指定することもできます。実行中の py ファイルがモジュール コードである場合は、-m xxx.py モードを使用して実行することもできます。
「memray-py filename.processid.bin」ファイルは、python3 -m memray Flamegraph memray-pyfilename.processid.bin によって HTML フレーム グラフ レポートに変換できます。
上図に示すように、上から下にプログラムの呼び出しプロセスを示しており、幅は関数が使用するメモリの量を表します。
-
python3 -m memray run --native xxxx.py は、Python コード内の基礎となる C/C++ 関数の呼び出しによって消費されるメモリを追跡および分析します。
-
python3 -m memray run --trace-python-allocators xxx.py は、Python プログラムのメモリ アロケーター pymalloc をトレースおよび分析します。
これはパラメータを追加しない場合と同じ効果があるように見えますが、実際にはまったく異なります。このメソッドはメモリ割り当てを詳細に追跡します。Python には 4 つの一般的なメモリ アロケータ (malloc、free、realloc、pymalloc) があります。このパラメータは、Python でメモリ オーバーフローが発生した場合に非常に役立ちます。ただし、このパラメータを追加すると、転送速度が遅くなり、収集されたデータによって生成されるファイルのサイズが大きくなります。
-
python3 -m memray run --live xxx.py は、トレースされたメモリ データをライブ画面モードで表示します。
デフォルトでは、合計メモリのデータは大きいものから小さいものへと並べられます。「O」を押すと、プライベート メモリに従って大きいものから小さいものまでメモリ オブジェクトを並べ替えて表示します。「A」を押すと、メモリの数に従ってメモリ オブジェクトを並べ替えます。割り当てを高い順に並べ替えます。
この統計データを使用すると、どのオブジェクトが大量のメモリを占有しているのか、どのオブジェクトがメモリを頻繁に割り当てているのかをすぐに特定できます。これらのオブジェクトは主要な分析オブジェクトです。
フレームグラフコマンド---フレームグラフレポートの生成
-
python3 -m memray フレームグラフ --help ヘルプを表示する
-
python3 -m memray フレームグラフ xxx.bin はフレーム グラフを生成します
table コマンド -- テーブル レポートの生成
-
python3 -m memray table --help ヘルプを表示する
-
python3 -m memray table xxxx.bin は、bin ファイルをテーブル レポートに変換します。
Tree コマンド -- ツリー レポートの生成
-
python3 -m memray Tree --help ヘルプを表示する
-
python3 -m memray Tree xxxx.bin は、bin ファイルをツリー レポートに変換します。
summary コマンド -- 概要レポートの生成
-
python3 -m memray summary --help ヘルプの表示
-
python3 -m memray summary xxxx.bin は bin ファイルを分析し、概要レポートを生成します
stats コマンド---詳細な統計レポートを生成する
-
python3 -m memray stats --help ヘルプを表示する
-
python3 -m memray stats xxxx.bin は bin ファイルを分析し、詳細なレポートを生成します
最後に:以下の完全なソフトウェア テスト ビデオ チュートリアルが編集され、アップロードされています。必要な友人は自分で入手できます[100% 無料保証]
ソフトウェアテスト面接文書
私たちは高給の仕事を見つけるために勉強しなければなりません。以下の面接の質問は、アリババ、テンセント、バイトなどの一流インターネット企業の最新の面接資料からのものであり、バイトの上司の中には権威ある回答をしている人もいます。 set 面接情報に基づいて、誰もが満足のいく仕事を見つけることができると思います。