Naar hoofdinhoud
🔒 Voorbeeldmodus. De eerste vijftien Foundations-lessen zijn gratis; deze is Pro. Start een 7-daagse trial om de editor, AI-hints en de rest van het curriculum te ontgrendelen. Kaart vereist, op elk moment opzegbaar in Dashboard.Start 7-daagse trial →
← CursussenSenior Deep-DivesModule 4 · Memory + profiling · RecapGeheugenlekken: cycli en zwakkerefpredict98 / 161
+100 XP
Opdracht
📝 **Taak:** Voorspel de exacte uitvoer. Twee `Node`-instanties wijzen naar elkaar (`a.peer = b`, `b.peer = a`) — een hertellingscyclus. `gc.disable()` stopt de cycluscollector. Na `del a` + `del b` is de hertelling van elk nog steeds 1 (van de peer), dus geen van beide sterft. Alleen `gc.collect()` vindt en doorbreekt de cyclus, waardoor beide finalisatie-callbacks worden geactiveerd. 📋 Implementeer bovenstaande functie. Tests worden automatisch uitgevoerd. 💡 **Hint:** Herlees de theorie als je vastloopt.
Voorspel uitvoer

Lees de code zorgvuldig

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()

Wat zal het programma uitprinten? Schrijf hier:

💬 Discussie

Wees de eerste — stel een vraag of deel een tip.
Log in om mee te doen aan de discussie. Lezen is gratis.
Discussie laden…