Python垃圾收集器文档


132

我正在寻找详细描述python垃圾回收如何工作的文档。

我对在哪个步骤中完成操作很感兴趣。这三个集合中有哪些对象?在每个步骤中删除哪些对象?参考循环使用什么算法?

背景:我正在实施一些必须在短时间内完成的搜索。当垃圾收集器开始收集最旧的一代时,它比其他情况“慢很多”。它花费了比计划搜索更多的时间。我正在寻找如何预测何时收集最古老的一代以及需要多长时间。

很容易预测何时使用get_count()和收集最老的一代get_threshold()。也可以使用进行操纵set_threshold()。但是我看不出collect()用武力做出更好的决定或等待预定的收集会多么容易。

Answers:


126

没有关于Python如何进行垃圾收集的明确资源(除了源代码本身),但是这3个链接应该给您一个很好的主意。

更新资料

来源实际上很有帮助。从中获得多少取决于您对C的理解程度,但是注释实际上非常有帮助。跳到该collect()功能,注释会很好地解释该过程(尽管在技术上非常严格)。


3
CPython不再使用Subversion。他们切换到hg.python.org托管的Mercurial。由于我不知道如何链接到该站点上文件的当前版本,因此我将链接到一个非官方的GitHub镜像
Marius Gedminas

1
没关系,想出了如何链接到官方网站上的最新gcmodule.c。我仍然觉得GitHub更具可读性。
Marius Gedminas

学到很多。Thx
gus

1
第一个链接没有指向与Python垃圾回收相关的任何内容。请更新链接。
Manish Barnwal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.