Saltar al contenido principal
🔒 Modo vista previa. Las primeras quince lecciones de Foundations son gratis; esta es Pro. Inicia un trial de 7 días para desbloquear el editor, las pistas AI y el resto del programa. Tarjeta requerida, cancela cuando quieras en Dashboard.Iniciar trial de 7 días →
← CursosSenior Deep-DivesModule 4 · Memory + profiling · RecapPérdidas de memoria: ciclos y referencia débilpredict98 / 161
+100 XP
Tarea
📝 **Tarea:** Predecir el resultado exacto. Dos instancias de `Node` se apuntan entre sí (`a.peer = b`, `b.peer = a`): un ciclo de recuento. `gc.disable()` detiene el recolector de ciclos. Después de `del a` + `del b`, el recuento de cada uno sigue siendo 1 (del par), por lo que ninguno muere. Sólo `gc.collect()` encuentra y rompe el ciclo, lo que activa ambas devoluciones de llamada de finalización. 📋 Implemente la función anterior. Las pruebas se ejecutan automáticamente. 💡 **Pista:** Vuelve a leer la teoría si te quedas atascado.
Predice la salida

Lee el código con atención

import gc
import weakref

deaths = []


def watcher(name):
    deaths.append(name)


class Node:
    def __init__(self, name):
        self.name = name
        self.peer = None


a = Node("a")
b = Node("b")
a.peer = b
b.peer = a
weakref.finalize(a, watcher, "a")
weakref.finalize(b, watcher, "b")

gc.disable()
del a
del b
print(f"after_del:{deaths}")

gc.collect()
print(f"after_gc:{sorted(deaths)}")
gc.enable()

¿Qué imprimirá el programa? Escribe aquí:

💬 Discusión

Sé el primero en hacer una pregunta o compartir un consejo.
Inicia sesión para unirte a la discusión. Leer es gratis.
Cargando discusión…