Pythonでsys.getsizeof()を使ってオブジェクトのメモリ使用量を効率的に測定する方法
sys.getsizeof() を使用すると、Pythonオブジェクトのメモリ使用量を確認できます。
import sys
mylist = range(0, 10000)
print(sys.getsizeof(mylist)) # 48
えっ……待って。この巨大なリストがたった48バイト?
これは range 関数がイテラブルオブジェクトを返し、数値のリストのように振る舞うものの、内部では最後のイテレーション番号をカウントしているだけだからです。range は実際の数値リストを使うよりもはるかにメモリ効率が良いのです。
リスト内包表記を使って同じ範囲から実際のPythonリストを作成すると、その違いが明確になります。
import sys
myreallist = [x for x in range(0, 10000)]
print(sys.getsizeof(myreallist)) # 87632
10,000個の数値で約87KBです。range オブジェクトと比較すると、メモリ使用量の差は歴然としています。
重要なポイント
sys.getsizeof()はオブジェクト自体のサイズのみを返し、参照しているオブジェクトのサイズは含みませんrangeは遅延評価型のシーケンスで、メモリ効率に優れています- 大量のデータを扱う場合は、リストではなくジェネレータや
rangeの活用を検討しましょう
Python
- 建設機械の春支度:時間節約と寿命延長の必須メンテナンス
- 四半期ごとのサプライチェーン健康診断:スムーズな運営を確保する
- Python データ型マスター: 実践ガイド
- Python 演算子完全マスター: 包括的ガイド
- Python forループ完全マスター: 構文・例・高度なパターン
- Python pass文完全マスター: 実践ガイド
- Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
- Python辞書完全ガイド:作成、操作、高度なテクニック
- Python range()関数をマスター:基礎から応用まで
- Python time.sleep():コードに遅延を追加する方法(例付き)
- Pythonでファイル・ディレクトリの存在確認:実践ガイド