On 27 Kwi, 23:21, Duncan Booth <duncan.bo...@invalid.invalid> wrote: > Michal M <mich.mier...@googlemail.com> wrote: > > Hi > > > I've just found out that one of objects is not destroyed when it > > should be. This means that something was holding reference to this > > object or part of it (i.e. method). Is there any way to check what > > holds that reference? I am unable to do that just looking to the code > > or debugging it because it is pretty complicated, but I am able to > > invoke this situation again. > > See if this code helps: > > http://groups.google.com/group/comp.lang.python/browse_thread/thread/... > > It's pretty old so it may need some adjustment, but I wrote it > to figure out exactly that sort of problem.
Thanks you for answers. I tried to use gc.get_referrers(self) in point in code when according to me object should be destroyed earlier but I did not see anything interesting. Then just realised that gc will not destroy object even when itself holds reference to his own method. For example class A(object): def a(self): pass def b(self): self.method = self.a def __del__(self): print "A object deleted" >> a = A() >> del a A object delted >> a = A() >> a.b() >> del a ... nothing ... I thought gc would discover such circle loops but apparently it did not. -- http://mail.python.org/mailman/listinfo/python-list