weakref, memory management and execution slow down in PyQt4
kjs
bfb at riseup.net
Sun Sep 7 15:11:25 EDT 2014
Antoine Pitrou:
> kjs <bfb <at> riseup.net> writes:
>>
>> I have come to believe that the growing number of weakrefs is slowing
>> down execution. Is my analysis misguided? How can I introspect further?
>> If the slowdown can be attributed to weakref escalation, what are some
>> next steps?
>
> The way to analyze this is to build some gradually smaller subsets of your
> application until you can isolate what is causing the growth in number of
> objects (if any). I would suggest first remove the GUI and replace it with
> some dummy functions, to stress your core logic.
Thanks for the advice. I commented out the graph generation and PyQt call
>>> self.app.processEvents()
where in the class __init__
>>> self.app = QtGui.QApplication(sys.argv)
This stopped the weakref proliferation. All other objects grow and
shrink in number as expected.
>
> Note that "top" isn't a very reliable tool, as memory fragmentation and
> other factors can cause your process' visible size to grow even though
> Python's memory consumption may be stable. There are dedicated Python tools
> for finer analysis, such as tracemalloc, which is standard on 3.4 and available
> as a backport for older versions:
>
> https://docs.python.org/3/library/tracemalloc.html
> http://pytracemalloc.readthedocs.org/
>
> But regardless of such tools, the approach above (try to decompose your
> workload into separate parts until your find the culprit) is highly recommended.
>
> Regards
>
> Antoine.
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0x8A61431E.asc
Type: application/pgp-keys
Size: 11239 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-list/attachments/20140907/7bce4702/attachment.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/python-list/attachments/20140907/7bce4702/attachment.sig>
More information about the Python-list
mailing list