You might try looking at references between objects, especially if there are any cyclic refs. For instance, if you have a data structure in which child nodes have back refs to their parents, try changing these to use weakref's. This may help the garbage collector to better reclaim discarded objects, so that not so many will need to be held in memory.
-- Paul -- http://mail.python.org/mailman/listinfo/python-list