Pythonはインタプリタされ、動的に型付けされた言語であるため、そのような出力を生成することは、可能であるとしても非常に困難です。この情報を取得する唯一の合理的な方法は、ターゲットインタープリターでコードをプロファイリングすることだと思います。
真のメモリマップを探しているのであれば、PythonはCやC ++と同じ種類のコンパイルプロセスを実行しないため、そのようなツールが存在するかどうかは疑問です。プログラムが解析および解釈されるときにすべてが実行時に初期化および割り当てられるため、特にこのような異なるアーキテクチャで実行している場合は、あるインタプリタが別のインタプリタと同じように動作することは言うまでもありません。その結果、オブジェクトが同じ場所に作成されること、または全体的なメモリ構造が同じであることは言うまでもありません。
sys.getsizeof(object, [default])
メモリフットプリントを決定しようとしているだけの場合は、Telitのライブラリでサポートされていれば、を使用して手動でチェックすることができます。彼らがCPythonの直接の実装を使用しているとは思いません。それでも、これは常に機能するとは限りません。パラメータTypeError
を指定しないとオブジェクトのサイズを決定できない場合は、 raiseを使用しdefault
ます。
モジュールのバイトコード逆アセンブルの出力を調べることで興味深い結果が得られる場合もありますが、これはインタープリターで機能し、インタープリターが実際にVMとして実装されているdis
ことを前提としています。dis
シンボルのリストが必要な場合は、このレシピをご覧ください。リフレクションを使用して、シンボルのリストをダンプします。
ここでは、適切な手動テストが重要です。最善の策は、モジュールのCMUX(COMポートMUXing)をセットアップし、コンソール出力を監視することです。メモリが不足し始めたかどうかはすぐにわかります。