| I l@ve RuBoard |
|
1.17 The gc Module(Optional, 2.0 and later) The gc module provides an interface to the built-in cyclic garbage collector. Python uses reference counting to keep track of when to get rid of objects; as soon as the last reference to an object goes away, the object is destroyed. Starting with Version 2.0, Python also provides a cyclic garbage collector, which runs at regular intervals. This collector looks for data structures that point to themselves, and attempts to break the cycles. Example 1-87 shows this. You can use the gc.collect function to force full collection. This function returns the number of objects destroyed by the collector. Example 1-87. Using the gc Module to Collect Cyclic Garbage
File: gc-example-1.py
import gc
# create a simple object that links to itself
class Node:
def _ _init_ _(self, name):
self.name = name
self.parent = None
self.children = []
def addchild(self, node):
node.parent = self
self.children.append(node)
def _ _repr_ _(self):
return "<Node %s at %x>" % (repr(self.name), id(self))
# set up a self-referencing structure
root = Node("monty")
root.addchild(Node("eric"))
root.addchild(Node("john"))
root.addchild(Node("michael"))
# remove our only reference
del root
print gc.collect(), "unreachable objects"
print gc.collect(), "unreachable objects"
12 unreachable objects
0 unreachable objects
If you're sure that your program doesn't create any self-referencing data structures, you can use the gc.disable function to disable collection. After calling this function, Python 2.0 works exactly like 1.5.2 and earlier. |
| I l@ve RuBoard |
|