<div dir="ltr">I can confirm that this continues to use more memory on both Windows and Linux using the latest PyPI release.<div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 5, 2017 at 10:21 AM, Hayward, Anthony <span dir="ltr"><<a href="mailto:Anthony.Hayward@sagentia.com" target="_blank">Anthony.Hayward@sagentia.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">New PyQt5 user here.<br>
<br>
I was hoping someone could let me know if I'm doing something wrong, or if I've found a bug in PyQt5?<br>
<br>
In my full application, every time findChild() is called on the view, the application uses more memory. Here's a simple example that replicates the issue:<br>
<br>
<br>
# memoryTest.qml:<br>
import QtQuick 2.0<br>
<br>
Item {<br>
    id: dummy<br>
    width: 100; height: 100;<br>
}<br>
<br>
<br>
# memoryTest.py<br>
import sys<br>
from PyQt5.QtQuick import QQuickView<br>
from PyQt5.QtGui import QGuiApplication<br>
from PyQt5.QtCore import QUrl, QObject, QTimer, pyqtSlot<br>
<br>
class Controller(QObject):<br>
    def __init__(self, view):<br>
        """ Initialise the controller """<br>
        QObject.__init__(self)<br>
<br>
        self._view = view<br>
<br>
        # Create timer loop to update the screen for text<br>
        self._updateLoopTimer = QTimer()<br>
        self._updateLoopTimer.timeout.<wbr>connect(self.myTestSlot)<br>
        self._updateLoopTimer.start(<wbr>1000)<br>
<br>
    @pyqtSlot()<br>
    def myTestSlot(self):<br>
        for _ in range(1000):<br>
            thing = self._view.findChild(QObject, "aChildThatDontExist")<br>
        print(thing)<br>
<br>
if __name__ == '__main__':<br>
    # Create main app<br>
    app = QGuiApplication(sys.argv)<br>
<br>
    view = QQuickView()<br>
    ctrl = Controller(view)<br>
    view.setSource(QUrl("<wbr>memoryTest.qml"))<br>
    view.rootContext().<wbr>setContextProperty("ctrl", ctrl)<br>
    view.show()<br>
<br>
    # Wait till app closed<br>
    app.exec_()<br>
<br>
    # Exit this Python application<br>
    sys.exit()<br>
<br>
<br>
<br>
It doesn't seem to matter whether I call findChild() for an object that does or doesn't exist. The example above uses a bit under 400kB of memory a second.<br>
<br>
Any help would be appreciated.<br>
<br>
Thanks in advance,<br>
Anthony<br>
______________________________<wbr>__<br>
This e-mail message is confidential and for use by the addressee only. If you are not the intended recipient, you must not use, disclose, copy or forward this transmission. Please return the message to the sender by replying to it and then delete the message from your computer. Sagentia provides e-mail services for both itself and its group companies. Sagentia shall not be held liable to any person resulting from the use of any information contained in this e-mail and shall not be liable to any person who acts or omits to do anything in reliance upon it. Sagentia does not accept responsibility for changes made to this message after it was sent.<br>
<br>
Company Information: Name: Sagentia Limited. Registered Address: Harston Mill, Harston Cambridge CB22 7GG. Registered as a Company in England: 2081960 VAT Number: 432214202<br>
______________________________<wbr>_________________<br>
PyQt mailing list    <a href="mailto:PyQt@riverbankcomputing.com">PyQt@riverbankcomputing.com</a><br>
<a href="https://www.riverbankcomputing.com/mailman/listinfo/pyqt" rel="noreferrer" target="_blank">https://www.<wbr>riverbankcomputing.com/<wbr>mailman/listinfo/pyqt</a></blockquote></div><br></div>