Repolode
bloomberg

bloomberg/memray

Pythonコード、ネイティブ拡張、インタープリターのメモリ割り当てを追跡し、複数形式のレポートを生成するPython用メモリプロファイラーです。

スター
15,389
フォーク
480
未解決の Issue
37
最終コミット
一昨日

これは何?

MemrayはPython用のメモリプロファイラーです。Pythonコード、ネイティブのC/C++拡張モジュール、Pythonインタープリター自体によるメモリ割り当てを記録し、取得したデータからフレームグラフ、テーブル、ツリー、ターミナル向けサマリーなどのレポートを生成します。通常はコマンドラインツールとして`memray run`で実行しますが、Trackerコンテキストマネージャーを使ってライブラリとして利用することもできます。

サンプリング型のプロファイラーとは異なり、Memrayはすべての関数呼び出しをトレースするため、コールスタックを正確に記録できます。ネイティブトラッキングは`--native`で有効にでき、結果にC/C++のスタックフレームを追加します。numpyやpandasなどの拡張モジュールを使っている場合に役立ちます。ライブモードではプログラムの実行中にターミナル上で割り当てを確認でき、attachを使えばすでに実行中のプロセスのトラッキングを開始できます。

Memrayは、メモリ使用量が多い原因となっているコードの特定、メモリリークの発見、大量のメモリを割り当てるホットスポットの特定といった、一般的なメモリ問題の調査を目的としています。Pythonのスレッドとネイティブスレッドに対応しています。動作環境はLinuxとmacOSのみで、Python 3.9以降が必要です。pytestプラグインのpytest-memrayは別プロジェクトとして提供されています。

主な機能

  • 01サンプリング型のプロファイラーとは異なり、すべての関数呼び出しをトレースして正確なコールスタックを記録
  • 02`--native`を指定してPythonコードとネイティブC/C++拡張のメモリ割り当てを追跡
  • 03フレームグラフ、HTMLテーブル、ターミナル向けのツリーやサマリーを生成
  • 04プログラムの実行中にメモリ割り当てを調べられるライブターミナルインターフェース
  • 05すでに実行中のPythonプロセスにアタッチ可能
  • 06Trackerコンテキストマネージャーを介してPythonライブラリとして利用可能

ユースケース

  • Pythonのサービスやスクリプトでメモリ使用量が多い原因を特定する
  • 長時間稼働するアプリケーションでメモリリークを見つける
  • 大量のメモリを割り当てるコードのホットスポットを特定する
  • numpyやpandasなどのC拡張に依存するPythonプログラムをプロファイリングする

クイックスタート

  1. 1

    pipでPyPIからMemrayをインストールします

    python3 -m pip install memray
  2. 2

    プロファイラーでスクリプトを実行し、メモリ割り当てを記録します

    python3 -m memray run my_script.py
  3. 3

    結果ファイルからHTML形式のフレームグラフを生成します

    memray flamegraph memray-my_script.py.2369.bin

使う前に知っておきたいこと

  • LinuxとmacOSでのみ動作し、Windowsにはインストールできません。
  • ソースからビルドするには、libunwind、lz4、libdebuginfodなどのシステムライブラリが必要です。

トピック

よくある質問

memray とは?
Pythonコード、ネイティブ拡張、インタープリターのメモリ割り当てを追跡し、複数形式のレポートを生成するPython用メモリプロファイラーです。 MemrayはPython用のメモリプロファイラーです。Pythonコード、ネイティブのC/C++拡張モジュール、Pythonインタープリター自体によるメモリ割り当てを記録し、取得したデータからフレームグラフ、テーブル、ツリー、ターミナル向けサマリーなどのレポートを生成します。通常はコマンドラインツールとして`memray run`で実行しますが、Trackerコンテキストマネージャーを使ってライブラリとして利用することもできます。
memray は無料で使えますか?ライセンスは?
memray は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
memray は今もメンテナンスされていますか?
活発にメンテナンス中。memray の最終コミットは 2026年10月19日 です。
memray は何に使えますか?
Pythonのサービスやスクリプトでメモリ使用量が多い原因を特定する 長時間稼働するアプリケーションでメモリリークを見つける 大量のメモリを割り当てるコードのホットスポットを特定する numpyやpandasなどのC拡張に依存するPythonプログラムをプロファイリングする
memray のインストール方法は?
pipでPyPIからMemrayをインストールします: python3 -m pip install memray プロファイラーでスクリプトを実行し、メモリ割り当てを記録します: python3 -m memray run my_script.py 結果ファイルからHTML形式のフレームグラフを生成します: memray flamegraph memray-my_script.py.2369.bin
memray はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/bloomberg/memray

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト