web-dev-qa-db-ja.com

Pythonガベージコレクターのドキュメント

pythonガベージコレクションの仕組みを詳細に説明したドキュメントを探しています。

どのステップで何が行われるのか興味があります。これら3つのコレクションにはどのオブジェクトが含まれていますか?各ステップでどの種類のオブジェクトが削除されますか?参照サイクルの検出に使用されるアルゴリズムは何ですか?

背景:短時間で終了する必要のある検索を実装しています。ガベージコレクターが最も古い世代の収集を開始すると、他の場合よりも「非常に」遅くなります。検索用よりも時間がかかりました。最も古い世代を収集する時期とそれにかかる時間を予測する方法を探しています。

get_count()およびget_threshold()を使用して、最も古い世代を収集する時期を簡単に予測できます。 set_threshold()でも操作できます。しかし、collect()を強制的に作成するか、スケジュールされた収集を待つ方が良いかどうかはわかりません。

128
Ante

Pythonがガベージコレクションを行う方法(ソースコード自体を除く)についての明確なリソースはありませんが、これらの3つのリンクからかなり良いアイデアが得られるはずです。

更新

ソースは実際にかなり役に立ちます。 Cをどれだけ読むかによって異なりますが、コメントは実際には非常に役立ちます。 collect() function にスキップすると、コメントはプロセスをよく説明しています(非常に技術的な用語ではありますが)。

124
Rafe Kettler