A gc modul a Python 2.0-ás verziójától érhetÅ‘ el. Felületet nyújt a beépÃtett automatikus szemétgyűjtÅ‘höz.
A Python hivatkozásszámlálással tartja nyilván az objektum hivatkozásokat – ha egy objektum utolsó hivatkozása megszűnik, az objektum megsemmisül.
A 2.0-ás Pythontól kezdÅ‘dÅ‘en rendszeresen lefut a szemétgyűjtÅ‘ program. Ez olyan adat-struktúrákat keres, melyek önmagukra hivatkoznak, és ezzel megállÃthatják a szemétgyűjtés folyamatát. (soha nem kerülnek törlésre, mert mindig hivatkoznak önmagukra).
A nem használt objektumok törlését a gc.collect() függvénnyel kényszerÃtheted ki. A függvény a szemétgyűjtÅ‘ által megsemmisÃtett objektumok számával tér vissza.
Ha nem használsz önmagára hivatkozó objektumot, ezt a funkciót a gc.disable() utasÃtással kapcsolhatod ki.
# File: gc_az_automatikus_szemetgyujto_hasznalata.py import gc # egy onmagara hivatkozo objektum keszitese class Node: def __init__(self, name): self.name = name self.parent = None self.children = [] def addchild(self, node): print node.name, "-t gyermekkent bejegyeztuk" node.parent = self self.children.append(node) def __repr__(self): return "<Node %s at %x>" % (repr(self.name), id(self)) # az onmagara hivatkozo struktura beallitasa root = Node("Anya") root.addchild(Node("Balazs")) root.addchild(Node("Sebo")) root.addchild(Node("Kristof")) print "\n Toroljuk az Anya objektumot\n" del root print gc.collect(), "nem hasznalt objektum volt" print gc.collect(), "nem hasznalt objektum volt"
# File: gc_az_automatikus_szemetgyujto_hasznalata.out Balazs -t gyermekkent bejegyeztuk Sebo -t gyermekkent bejegyeztuk Kristof -t gyermekkent bejegyeztuk Toroljuk az Anya objektumot 12 nem hasznalt objektum volt 0 nem hasznalt objektum volt
You must be logged in to post a comment.