あなたがipython
かjupyter
を使用していると仮定すると、あなたがリストを取得するために仕事の少しを行う必要がありますが、オブジェクトのすべてのあなたがが定義されています。つまり、globals()
にあるすべてのものを取り除き、modules
,builtins
、ipython objects
などのオブジェクトを除外することを意味します。これらのオブジェクトがあることが確認できたら、sys.getsizeof
でサイズを取得することができます。これは以下のようにまとめることができます。
import sys
# These are the usual ipython objects, including this one you are creating
ipython_vars = ['In', 'Out', 'exit', 'quit', 'get_ipython', 'ipython_vars']
# Get a sorted list of the objects and their sizes
sorted([(x, sys.getsizeof(globals().get(x))) for x in dir() if not x.startswith('_') and x not in sys.modules and x not in ipython_vars], key=lambda x: x[1], reverse=True)
Pythonオブジェクト(Pythonの組み込み関数で作成されたもの)のために、sys.getsizeof
は非常に正確になりますのでご注意ください。しかし、サードパーティライブラリを使用して作成されたオブジェクトでは、不正確な場合があります。さらに、sys.getsizeof
は、オブジェクトがガベージコレクタによって管理されている場合、追加のガベージコレクタオーバーヘッドを追加することに注意してください。したがって、実際にはより重く見えるものもあります。
注釈として、numpy
の.nbytes
メソッドは、配列オブジェクトの要素以外の属性によって消費されるメモリを含まないという点で、やや誤解を招く可能性があります。
こちらがお役に立てば幸いです。
'import sys; dir()でxのソートされた([(x、sys.getsizeof(x))、key = lambda x:x [1]、reverse = True) '? – Abdou
[iPythonでオブジェクトのメモリ使用量をチェックする方法は?](http://stackoverflow.com/questions/563840/how-can-i-check-the-memory-usage-of-objects-in -ipython) – amin
重複ではなく、彼は名前を知らないオブジェクトを見つける方法を尋ねています。 @あなたはそれを私が考えている答えにする必要がありますか? –