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


132

私はpythonガベージコレクションがどのように機能するかを詳細に説明しているドキュメントを探しています。

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

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

最も古い世代を収集する際に予測することは容易であるget_count()get_threshold()。これもで操作できますset_threshold()。しかしcollect()、無理に作ったり、スケジュールされたコレクションを待つ方が、どれほど簡単に決定できるかわかりません。

回答:


126

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

更新

ソースは実際にはかなり役に立ちます。どれだけ上手くいくかは、Cをどの程度よく読んでいるかによって異なりますが、コメントは非常に役に立ちます。collect()関数までスキップして、コメントでプロセスをよく説明します(非常に専門的な用語ではあります)。


3
CPythonはSubversionを使用しなくなりました。彼らはhg.python.orgでホストされているMercurialに切り替えました。そのサイトの現在のバージョンのファイルにリンクする方法がわからないので、代わりに非公式のGitHubミラーにリンクします。
Marius Gedminas 2013

1
気にしないで、公式サイトで最新のgcmodule.cにリンクする方法を見つけました。私はまだGitHubを読みやすくしています。
Marius Gedminas 2013

多くを学ぶ。THX
GUS

1
最初のリンクは、Pythonガベージコレクションに関連するものを指していません。リンクを更新してください。
マニッシュBarnwal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.