gc – a beépített szemétgyűjtÅ‘

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.

Használaton kívüli objektumok törlése

# 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

Post Comments

You must be logged in to post a comment.