以下の関数でメモリ使用量(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
アクティビティモニタでメモリ使用量を確認しました.
一致していますので,正しく動作するようです*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)."と記載されています.