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é tipos 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 finalizar en poco tiempo. Cuando el recolector de basura comienza a recolectar la generación más antigua, es "mucho" más lenta que en otros casos. Tomó más tiempo del previsto para las búsquedas. Estoy buscando cómo predecir cuándo recolectará la generación más antigua y cuánto tiempo llevará.
Es fácil predecir cuándo recolectará la generación más antigua con get_count()
y get_threshold()
. Eso también puede ser manipulado con set_threshold()
. Pero no veo cuán fácil de decidir es mejor hacer collect()
por la fuerza o esperar la recolección programada.