Прескочи на главни садржај
🔒 Режим прегледа. Првих петнаест Foundations лекција је бесплатно; ова је Pro. Покрените 7-дневни trial да откључате едитор, AI савете и остатак курса. Картица је обавезна, можете отказати у било ком тренутку у Dashboard.Покрени 7-дневни trial →
← KurseviSenior Deep-DivesModule 4 · Memory + profiling · RecapЦурење меморије: циклуси и слаба рефpredict98 / 161
+100 XP
Zadatak
📝 **Задатак:** Предвидите тачан резултат. Две инстанце `Чвора` показују једна на другу (`а.пеер = б`, `б.пеер = а`) — циклус рефцоунт. `гц.дисабле()` зауставља колектор циклуса. После `дел а` + `дел б`, поновни број сваког од њих је и даље 1 (од вршњака) тако да ниједан не умире. Само `гц.цоллецт()` проналази и прекида циклус, покрећући оба финализована повратна позива. 📋 Имплементирајте горњу функцију. Тестови се покрећу аутоматски. 💡 **Савет:** Поново прочитајте теорију ако запнете.
Predvidi izlaz

Pažljivo pročitaj kod

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

Šta će program ispisati? Napiši ovde:

💬 Diskusija

Budi prvi — postavi pitanje ili podeli savet.
Prijavi se da bi se pridružio diskusiji. Čitanje je besplatno.
Učitavanje diskusije…