みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Pythonプロセスのメモリ使用量を取得する

以下の関数でメモリ使用量(RSS)が取得できます.

import platform
import resource

def get_maxrss() -> float:
    system = platform.system()
    r = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
    if system == "Darwin":
        return r / 1024 / 1024  # bytes on MacOS
    return r / 1024  # kilobytes on Linux

たまたま手元にあったスクリプトの最後に,この関数を呼び出す処理を加えて実行してみました.

30.6 MB

アクティビティモニタでメモリ使用量を確認しました.

f:id:atsuhiro-me:20210720093033p:plain

一致していますので,正しく動作するようです*1

単位について

pythonのresourceモジュールはOSのgetrusageを呼び出すので,Linuxならば単位がkilobyteとなり*2,MacOSならば単位がbyteとなります*3

*1:MacOS 10.15.7 Python 3.8.10 で動作確認

*2:getrusage(2) - Linux manual page

*3:MacOS 10.15.7のmanに"ru_maxrss the maximum resident set size utilized (in bytes)."と記載されています.