recolector collector basura python garbage-collection

collector - Documentación del recolector de basura de Python



python collect (1)

Estoy buscando documentos que describan en detalle cómo funciona la recolección de basura 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 deben finalizar 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 recogerá la generación más antigua y cuánto tiempo llevará.

Es fácil predecir cuándo recogerá 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é fácil es decidir si es mejor hacer collect() por la fuerza o esperar la recolección programada.


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 idea bastante buena.

Actualizar

La fuente es realmente bastante útil. La cantidad que obtengas dependerá de cuán bien leas C, pero los comentarios son realmente muy útiles. Pase a la función de collect() en https://github.com/python/cpython/blob/master/Modules/gcmodule.c y los comentarios explican bien el proceso (aunque en términos muy técnicos).