Il giorno mar, 14/12/2010 alle 18.02 +0100, Hans Meine ha scritto:
> Am Dienstag 14 Dezember 2010, 17:05:42 schrieb Darryl Wallace:
> > One of the things I've found in this regard has to do with Python and
> > garbage collection.  If the reference count to certain objects does not go
> > to zero then the item will not be garbage collected.
> > 
> > Ensure that the objects that you want cleaned up have no references to
> > them.  I've found that setting widgets' parents to None and then setting
> > that variable to None often does the trick.
> > 
> > Anyone else have tips on garbage collection with PyQt???
> 
> I also use sip.delete(obj) or obj.deleteLater() from time to time.
> 
> Also I have a large number of helper functions based on the gc module, e.g. 
> the ones below.  These are very useful, use like this:
> 
> h1 = gcHistogram()
> ... # some long-running calculations which seem to leak memory
> h2 = gcHistogram()
> diffHists(h1, h2)
> 
> This will output the *types* of objects that have been created in the 
> meantime, along with their counts.  Sometimes, this will not help much 
> though, 
> e.g. if you use standard python lists a lot.  (It might make sense to use 
> specialized classes derived from list anyway, no?)
> 
> def gcHistogram():
>       """Returns per-class counts of existing objects."""
>       result = {}
>       for o in gc.get_objects():
>               t = type(o)
>               count = result.get(t, 0)
>               result[t] = count + 1
>       return result
> 
> def diffHists(h1, h2):
>       """Prints differences between two results of gcHistogram()."""
>       for k in h1:
>               if h1[k] != h2[k]:
>                       print "%s: %d -> %d (%s%d)" % (
>                               k, h1[k], h2[k], h2[k] > h1[k] and "+" or "", 
> h2[k] - 
> h1[k])
> 

really useful thanks!

Using these functions I found that if I do something like this:

self.ui.lineEdit.mouseReleaseEvent=self....

I have to manually do:

self.ui.lineEdit.mouseReleaseEvent=None

to get the widget deleted, this seems a pyqt bug,

Nicola

> HTH,
>   Hans
> _______________________________________________
> PyQt mailing list    PyQt@riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to