PyCon APAC 2023

メモリプロファイラMemrayのススメ
2023-10-28 , track 3

Pythonプログラムを実行する際のメモリプロファイリングは重要です。ただ、実態を掴むのは難しいです。メモリプロファイリングの手法は大きく分けて2つ有ります。それらの特徴を知り、より実態をつかみやすいトレーシング手法を用いてているツールである Memray の使い方を解説します。

このトークでは、Pythonのメモリ状態の詳細をデモ画面を交えながら解説します。

リストの作り方による違いや、NumPyのメモリ確保の状況がわかります。さまざまなアウトプット方法がありますのでそれらの違いについても解説します。Jupyter Integrationも解説します。

このトークを見たら、自身のコードのメモリ状態の詳細を確認することができるようになります。


Memrayは、Python3.11のリリースマネージャーの「Pablo氏」が開発の中心にいる注目のツールです。

データ分析やシミュレーションを行う際に大きなデータを使うことがあります。その際のメモリ状態を見るのは重要です。NumPyなどのC拡張が使われているライブラリが確保するメモリの状態を見るのは難しいですが、今回紹介するMemrayはC拡張を含むPythonコードが実行されたメモリの状態を詳細にトレーシングします。
また、子プロセスを生成する CeleryGunicorn などの状況も確認できます。

トークの流れ

  • メモリプロファイラとは
    • 必要性
    • 2つの手法を紹介
    • ツールの紹介
    • プロファイリングの難しさ
  • Python用メモリプロファイラMemrayの紹介
  • Memrayの基本的な使い方
    • プロファイルの実行
    • 結果の表示
    • 現状をライブで見る
  • Pythonのコーディングによる違い
    • メモリの確保状況の違い
    • 実行時間の違いも見れる
  • NumPyを使った確認
    • メモリ確保の可視化
    • C拡張でも状況がきちんとわかる
  • 一歩進んだ使い方
    • Jupyter Integration を使う
    • with ステートメントで部分的に状態を見る
    • pytest limit でテストにメモリ制限を設ける

Python Web関係の業務を中心にコンサルティングやシステム構築を(株)CMSコミュニケーションズ代表取締役として手がけている。

Pythonをはじめとした技術話題を扱うPodcast「terapyon channel」https://podcast.terapyon.net/ を配信中。機械学習図鑑(翔泳社: 2019年4月)を共著、Pythonによるあたらしいデータ分析の教科書第2版(翔泳社: 2022年10月)を共著、スラスラわかるPython 第2版(翔泳社: 2021年12月)を監修、Pythonハッカーガイドブック(マイナビ出版: 2020年5月)を監訳、その他執筆活動も行っている。