0

この質問について少し拡張します。Pythonリストからオブジェクトを削除するのは簡単ですが、「ビジー」リスト(頻繁な削除と頻繁な追加)があるので、メモリリークを防ぎたいと思います。

  1. リストからオブジェクトを削除するだけで、オブジェクトは破棄されますか?(私はいいえを想定しています。)

  2. 私の仮定が正しければ、どうすればそれをリストから削除、同時に破棄できますか?

重要な場合、問題のオブジェクトは、私が作成したクラスのインスタンスです。新しいオブジェクトを挿入する必要があるたびに、オブジェクトを「ライブ」で作成する予定です。

myList.insert(index,myClass(constructorParm1,constructorParm2))

したがって、後でそのように作成されたインスタンスの一部を削除する必要がある場合は、それらがリストから削除されただけでなく、期間が削除されたことを確認したいと思います。

4

1 に答える 1

3

cPythonでは、オブジェクトの参照カウントが0に下がると、オブジェクトは自動的に破棄されます。

リストからエントリを削除すると、問題のオブジェクトの参照カウントがデクリメントされます。あなたはそれを破壊するために特別なことをする必要はありませんし、そうしようとするべきでもありません。オブジェクトへの他の参照がまだ存在する場合、オブジェクトを破棄すると他の参照が壊れます。

オブジェクトのガベージコレクションを妨げないオブジェクトへの参照を保持する場合は、weakref代わりに参照を使用してください。

于 2013-02-15T15:20:54.020 に答える