Python 垃圾回收器文档

135 投票
1 回答
81123 浏览
提问于 2025-04-16 08:45

我在寻找一些详细描述Python垃圾回收是怎么工作的文档。

我想知道每个步骤都做了什么。这三种回收的对象是什么?每个步骤删除了哪些类型的对象?用什么算法来查找引用循环?

背景:我正在实现一些必须在短时间内完成的搜索。当垃圾回收器开始回收最老的那一代对象时,它的速度“慢得多”,比其他情况要慢。这花费的时间超过了我预期的搜索时间。我想知道如何预测它什么时候会回收最老的那一代,以及需要多长时间。

通过使用get_count()get_threshold(),可以很容易预测它什么时候会回收最老的那一代。这些也可以通过set_threshold()来调整。但是我不太明白,强制调用collect()和等待定时回收哪个更好,判断这个有多简单。

1 个回答

128

关于 Python 是怎么进行垃圾回收的,实际上没有一个权威的资源(除了源代码本身),不过这三个链接应该能让你对这个过程有个不错的了解。

更新

源代码其实是非常有帮助的。你能从中获得多少信息,取决于你对 C 语言的理解程度,但里面的注释确实很有用。可以直接跳到 collect() 函数,那里的注释对整个过程的解释很清楚(虽然用的术语比较专业)。

撰写回答