Python でのモジュールの作成とインポートに関する初心者向けのこの演習を終了しました。
モジュール内のすべてがコンピュータのメモリにインポートされるのだろうか?
コードが長くなり、インポートされたモジュールがより多くなるにつれて、後でメモリに影響がありますか?
このため、リソース効率の高いコードを記述するためにメモリ管理を知る必要がありますか?
Python でのモジュールの作成とインポートに関する初心者向けのこの演習を終了しました。
モジュール内のすべてがコンピュータのメモリにインポートされるのだろうか?
コードが長くなり、インポートされたモジュールがより多くなるにつれて、後でメモリに影響がありますか?
このため、リソース効率の高いコードを記述するためにメモリ管理を知る必要がありますか?
モジュールは自動的にコンパイルされ (.pyc ファイル)、メモリにインポートされますが、メモリ不足を心配する必要はありません。モジュールは非常に小さいです。一度に何千ものモジュールがロードされるのはよくあることです!
Python がすべての作業を行うため、メモリ管理について知る必要はありません。
編集:各モジュール自体にコードとモジュールの多くのドキュメントを記述することもできます (ドキュメント文字列については、こちらを参照してください)。コンパイル手順で不要なものがすべて削除されるため、ロード時にモジュールのサイズや速度を増加させる必要はありません。テキスト、コメントなど
インポートを悪用してメモリをリークする方法は 1 つだけ想像できます。任意の名前のモジュールを動的に作成およびインポートできます (たとえば、プラグイン システムを作成する目的で)。それらを一度使用して、使用を中止してください。通常のインポート機構、つまり を使用してこれを行った場合__import__(variable_module_name)
、それらのモジュールは に追加されますが、sys.modules
それらはそれ以上使用されません。
解決策はうまくいきます。そうしないでください。本当にプラグイン システムを作成している場合は、プラグインが再利用されるため、その種の動的インポートはおそらく問題ありません。動的に生成された使い捨てコードを本当に使用する必要がある場合。使用してeval
ください。
動的に生成されたコード (自動テストなど) で本当にインポートを使用する必要がある場合は、インポートしsys.modules
たモジュールを消去する必要があります。 これは、そのようなことを行う方法を説明する素晴らしい記事です。
はいといいえ。
はい、モジュールはコンピューターのメモリにインポートされますが、リソース効率の高いコードを書くべきではありません。Python モジュールは非常に小さく (数 KiB、まれに数 MiB)、メモリ使用量に大きな影響を与えません。