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 qué se hace en qué paso. ¿Qué objetos hay en estas 3 colecciones? ¿Qué tipos de objetos se eliminan en cada paso? ¿Qué algoritmo se usa para encontrar los 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 previsto para las búsquedas. Estoy buscando cómo predecir cuándo recopilará la generación más antigua y cuánto tiempo tomará.

Es fácil predecir cuándo recopilará la generación más antigua con get_count() y get_threshold(). Eso también se puede manipular con set_threshold(). Pero no veo cuán fácil es decidir si es mejor hacer collect() por la fuerza o esperar la recolección programada.