线程不释放内存

时间:2016-06-19 16:22:28

标签: python multithreading pyqt

我的程序中有内存泄漏。

在我的代码中,我在一个线程中执行一个长操作。在此期间,我显示“等待动画”。长时间操作消耗大量内存(~800 Mo)。当操作完成后,我希望释放内存,但事实并非如此,我不知道为什么。我尝试del线程,以及deleteLater函数。

请你帮个忙吗?

我如何调用线程:

self.predictor = Predictor(some arguments)

def whenDone():

    # ...do some stuff...

    self.predictor.deleteLater()
    del self.predictor

self.predictor.finished.connect(whenDone)
self.predictor.start()

My Thread课程:

class Predictor(QtCore.QThread):

    def __init__(self, some arguments):

        QtCore.QThread.__init__(self)


    def __del__(self):

        """Method to destroy the thread properly"""

        self.wait()


    def run(self):

        # ...do some very long stuff...

1 个答案:

答案 0 :(得分:0)

监控内存使用情况可能很棘手。现代操作系统可能会选择永远不会减少为进程分配的内存页(并在顶部等工具中计算)。这并不意味着应用程序泄漏 - 它可以释放内存,并在不进一步增加内存占用的情况下重新分配它。