ぷろぐら×でざいん

Pythonオブジェクトのメモリー使用量を調べる

Pythonオブジェクトのメモリー使用量を調べる

Pythonオブジェクトのメモリー使用量を調べる

メモリー使用量調査

メモリーリークをするとサーバーが止まってしまいますね。ユーザーが増加するとデータ量は想定的に増えていきます。初期書かれているコードは大抵大量データを想定して書かれていないため、色々と不具合が出てくるものです。スロークエリー問題もデータ量に比例し、指数関数的に遅くなったりするものですよね。

それほど需要はあるとは思いませんが、オブジェクトのメモリー使用量を簡単に見る方法を共有します。



import sys 

data = [1, 2, 3, 4, 5]
print(sys.getsizeof(data)) <<< 104バイトでした でした。

object のサイズをバイト数で返します。object は任意の型のオブジェクトです。すべての組み込みオブジェクトは正しい値を返します。サードパーティー製の型については実装依存になります。
オブジェクトに直接起因するメモリ消費のみを表し、参照するオブジェクトは含みません。
オブジェクトがサイズを取得する手段を提供していない時は default が返されます。default が指定されていない場合は TypeError が送出されます。
getsizeof() は object の __sizeof__ メソッドを呼び出し、そのオブジェクトがガベージコレクタに管理されていた場合はガベージコレクタのオーバーヘッドを増やします。
getsizeof() を再帰的に使い、コンテナとその中身のサイズを割り出す例は、 再帰的な sizeof のレシピ を参照してください。

https://docs.python.org/ja/3/library/sys.html#sys.getsizeof

あとがき

Pythonにはこういったメソッドが多数用意されているので一度調べてみると良いかも知れませんね。もちろん使い所はかなり限定的になり、一般的ではありませんが、それでも知っているだけ損ではないですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください