これが可能かどうかはわかりません...python - すべてのインポートのメモリコストをプロファイルしますか?
私は大きなメモリサイズに成長する大きなPythonアプリケーションを持っています。可能であれば、プロセスの成長を最小限にするためにimport
ステートメントで追跡したいと考えています。
私が見つけた最も近いのは、ラインプロファイリング機能memory_profiler
です。しかし、それは "トップレベル"のメモリをプロファイルするだけですimport
ステートメント - 私はすべての従属インポートの内訳を欲しがります。私は、インポートステートメントにメモリサイズを追跡できるプロファイラは見つかりませんでした。
最近の監査では、import
ステートメントをtry/exceptブロックにドロップするだけでサードパーティフレームワークのサポートを可能にするいくつかのPyPiモジュールが示されているため、独自のコードを最適化することだけでは不安です。
try:
import bottle
# declare bottle support here
except:
pass
私のアプリはvirtualenvの中で展開されますが、展開の一部であり、同じvirtualenvの中で実行し、いくつかの他の兄弟のサービスがある... 1:
は、例えば、1つのライブラリがこれをしませんでしたそのうちbottle
を使用します。
この「パターン」は、私が使用するライブラリの一部で使用されており、望ましくない/不要なモジュールのオーバーヘッドは、このアプリケーションのメモリインプリントのかなりの量にあります(手動による分離と測定に基づく)。私はどのライブラリにパッチを当てるべきか、どのライブラリを無視しても問題ないかを知りたい。
'sys.getsizeof'はどうですか?例えば。 'import pandas;モジュール上で動作しないprint(getsizeof(pandas)) ' – blacksite
。 'pympler'は' asizeof'関数を持っていますが、これはうまくいくようです。私は輸入声明を無効にすることになったが、それは私に輸入の注文を与えた(それはいくらか追跡しやすくなった)。 –