Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.mixmin.net!news.unit0.net!takemy.news.telefonica.de!telefonica.de!newsfeed.xs4all.nl!newsfeed3a.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.001 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'python.': 0.02; 'causing': 0.04; 'received:198': 0.07; '[0]': 0.09; '__init__': 0.09; 'advice.': 0.09; 'expected.': 0.09; 'url:github': 0.09; 'python': 0.11; 'itself.': 0.14; 'bug,': 0.16; 'commented': 0.16; 'filename:fname piece:signature': 0.16; 'improper': 0.16; 'manifests': 0.16; 'programmer,': 0.16; 'subject:slow': 0.16; 'url:explore': 0.16; 'url:py': 0.16; 'folks': 0.16; 'wrote:': 0.18; 'code.': 0.18; "python's": 0.19; 'received:10.0.1': 0.19; 'unlike': 0.19; 'fit': 0.20; 'example': 0.22; 'header:In-Reply- To:1': 0.27; 'appear': 0.29; 'michael': 0.29; 'absolute': 0.30; 'kevin': 0.30; 'code': 0.31; 'lines': 0.31; 'that.': 0.31; 'languages:': 0.31; 'skip:q 20': 0.31; 'class': 0.32; 'minimal': 0.33; 'could': 0.34; 'problem': 0.35; 'something': 0.35; 'objects': 0.35; 'c++': 0.36; 'doubt': 0.36; 'thanks': 0.36; "i'll": 0.36; 'received:10.0': 0.36; 'so,': 0.37; 'list': 0.37; 'received:10': 0.37; 'button': 0.38; 'problems': 0.38; 'stopped': 0.38; 'to:addr:python-list': 0.38; 'pm,': 0.38; 'to:addr:python.org': 0.39; 'mailing': 0.39; 'most': 0.60; 'save': 0.62; 'kind': 0.63; 'between': 0.67; 'grow': 0.77; 'itself?': 0.84; 'leak.': 0.84; 'much,': 0.84; 'url:master': 0.84 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1410122384; bh=gOsmMW8jHZTAetTLQM6jpPSkB6hY47hLiZfxMemxZog=; h=Date:From:To:Subject:References:In-Reply-To:From; b=jLaocchJCUgsdGwa2kf4K721BVNktKISRDY0nYaVeSfmhSSbwvZs5Bjyn+M0nld1n IEFihor4KEpt8zuiO5AUDmvnpv6NicB6IHIcasPAm+NrFpKpe1viT4zhAM2bZyUMKD BFzio2bDPZGcV3e6E24BfKOyuPWgGu2ohmtdPM2k= Date: Sun, 07 Sep 2014 20:39:20 +0000 From: kjs MIME-Version: 1.0 To: python-list@python.org Subject: Re: weakref, memory management and execution slow down in PyQt4 References: <540BFE43.5030006@riseup.net> <540CADDD.3050501@riseup.net> <540CB15C.2060008@gmail.com> In-Reply-To: <540CB15C.2060008@gmail.com> Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="j3evN5BLmXqMDB6MLBcSiK5ddmJHhFivo" X-Virus-Scanned: clamav-milter 0.98.4 at mx1 X-Virus-Status: Clean X-Mailman-Approved-At: Mon, 08 Sep 2014 09:05:24 +0200 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 270 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1410159925 news.xs4all.nl 2872 [2001:888:2000:d::a6]:39682 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:77695 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --j3evN5BLmXqMDB6MLBcSiK5ddmJHhFivo Content-Type: multipart/mixed; boundary="------------030900010905050300000809" This is a multi-part message in MIME format. --------------030900010905050300000809 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Michael Torrie: > On 09/07/2014 01:11 PM, kjs wrote: >> Thanks for the advice. I commented out the graph generation and PyQt c= all >> >>>>> self.app.processEvents() >> >> where in the class __init__ >> >>>>> self.app =3D QtGui.QApplication(sys.argv) >> >> This stopped the weakref proliferation. All other objects grow and >> shrink in number as expected. >=20 > Can you make an absolute minimal example with no widgets save the graph= > itself? You could then go to the PyQt folks with that. Could be a bug= , > or could be an improper use of something by your code. This is one of > the problems with using Qt in other languages: it's not a perfect fit > for Python's object model as it is C++-based. So you have to think lik= e > a C++ programmer, and you might have to manage some resources manually,= > unlike normal Python objects which for the most part take care of > themselves. >=20 The code is minimal[0]. The only other widgets are a start button that fires off the plotting and a stop button that calls sys.exit(). Lines 112-114 appear to be causing the weakref proliferation. I do not doubt that I could be using PyQt4 incorrectly. I'll send a message to the pyqt mailing list as well. > Also you could try a minimal example using PySide instead of PyQt and > see if that also manifests the leak. If so, then the problem could be > in Qt itself. Though I suspect the problem is some kind of impedance > mismatch between C++ and Python. >=20 Thanks much, Kevin [0] https://github.com/kevinjos/kaggle-aes-seizure-prediction/blob/master/exp= lore.py --------------030900010905050300000809 Content-Type: application/pgp-keys; name="0x8A61431E.asc" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="0x8A61431E.asc" -----BEGIN PGP PUBLIC KEY BLOCK----- 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3D=3D =3Dy5+1 -----END PGP PUBLIC KEY BLOCK----- --------------030900010905050300000809-- --j3evN5BLmXqMDB6MLBcSiK5ddmJHhFivo Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIcBAEBCgAGBQJUDMJ4AAoJEF4CNj7uogNwGKgP/RZ9Dax5NAzKIcT1jCm9Mt+Z 32krWQYGOJRgHsYrTx50UQOXS/NbdgdmBL6pUUzMAkdRpnfCOdzc4+1yLPrxiEaW NSL10BTceC1cNdd74IhuNJsYO/WFfJkrvKNdJfY/DJp5bYaymdX/TVM6YryboSgx xGSBlGcQ9j8/VUW+Sw7gezM4tJSV2hFqx6uyyKXsfzFCNhGArT1YfMlpIcs10E/t ozK1fZEG+yTBlJsXF0XEgPQSy/cHFXbHZuQIJ0bMlGy4l21d76c1N6hT8n37Ony8 REGHkXXYQDvsMOKF2B2n4KPAHWKziNyfs1uTJUCGUKLVKSvSFPg3O+zIUX73kqFg NMYfsZVmYs/gpUMzE9ZB+CbswssGdIUYgqR7oReT5/lczJoHteA2NlkpPR+x7icp cCpKffYza6H+7Ie79o/gr6m3uVh3lmcMPkW1kUUGBdpmk8QH3qRT/qc7oxg5qMnj GGQNww+qreSupln+u+glLHOZ8u4+p25qfkHft8VVpMroAMkJt45ZP4F9Q6LGuA1y tWZNKkOgnnp7M16n4NX/97wsNGUlhOn/xb247+R3XusL/RwAstQg2/0Dn7g5Du3O uhhPmi6PvJAoHwW+nZgUva9jhd2yP7ubHHQUCCEs0Mj90qe3zQFUsFipvHUPAjrK SVVGIysV7RWVgnSOdXHP =buSp -----END PGP SIGNATURE----- --j3evN5BLmXqMDB6MLBcSiK5ddmJHhFivo--