34

重複の可能性:
Pythonメモリプロファイラー

私はかなり複雑な(約20,000)行のPythonプログラムを持っています。これは、いくつかの開発の後、実行時に増加する量のメモリを消費し始めました。すべてのメモリが何に使用されているかを知るための最良のツールとテクニックは何ですか?

通常、これは、オブジェクトへの参照を予期せず保持するか、拡張モジュールのバグ(Python 2.4インストールをしばらく使用しているため特に発生する可能性は低い)に起因します。

Twisted、Twisted Conch、MySQLdbなどのさまざまなサードパーティライブラリを使用しています。

4

2 に答える 2

18

一般に、カーソルを閉じないことは、最も一般的な種類のメモリ リークの 1 つです。ガベージ コレクターは、カーソルに関連する MySQL リソースを認識できません。close()メソッドが明示的に呼び出されない限り、MySQL は Python 側が解放されたことを知りません。

経験則。管理できる限り短いコード範囲で、カーソルを 開いたり、使用したり、閉じたりします。

于 2009-02-10T13:58:31.727 に答える
-1

Python のメモリはガベージ コレクタによって管理されます。一般に、C/C++ で拡張モジュールを作成している場合を除き、メモリ リークの問題はありません (Python2.5 以降では問題ありません)。その場合、Valgrind (ブログ投稿 - http://bruynooghe.blogspot.com/2008/12/finding-memory-leaks-in-python.html ) が役立つ場合があります。この人物 - http://mg.pov.lt/blog/hunting-python-memleaksが PDB と matplotlib を使用してメモリ リークを追跡していることがわかりました。これが役に立てば幸いです。Python のメモリ リークを修正した経験はありません。

于 2009-02-10T13:53:38.027 に答える