Documentación del recolector de basura de Python

Estoy buscando documentos que describan en detalle cómo funciona la recolección de basura de Python.

Me interesa lo que se hace en qué paso. ¿Qué objetos hay en estas 3 colecciones? ¿Qué tipo de objetos se eliminan en cada paso? ¿Qué algoritmo se usa para encontrar ciclos de referencia?

Antecedentes: estoy implementando algunas búsquedas que tienen que terminar en poco tiempo. Cuando el recolector de basura comienza a recolectar la generación más antigua, es “mucho” más lento que en otros casos. Tomó más tiempo del que está destinado para búsquedas. Estoy buscando cómo predecir cuándo se acumulará la generación más antigua y cuánto tiempo tomará.

Es fácil predecir cuándo recostackrá la generación más antigua con get_count() y get_threshold() . Eso también puede ser manipulado con set_threshold() . Pero no veo qué tan fácil de decidir es mejor hacer que collect() por la fuerza o espere la recolección progtwigda.

  • Recogida de basura de python
  • módulo gc docs
  • Detalles sobre la recolección de basura para Python

No hay un recurso definitivo sobre cómo Python hace su recolección de basura (que no sea el código fuente en sí), pero esos 3 enlaces deberían darle una buena idea.

Actualizar

La fuente es realmente muy útil. La cantidad que obtengas depende de lo bien que leas C, pero los comentarios son realmente muy útiles. Salte a la función de collect() y los comentarios explican bien el proceso (aunque en términos muy técnicos).