python内存问题使用' for循环'和数字

时间:2016-07-14 19:03:04

标签: python memory memory-management

我的整体问题是清理内存。现在问题分为两部分。 第一个是' for'使用的未释放的内存。环。我逐行使用memory_profiler查看内存使用情况。有问题的行是:

对于整体循环

Line #    Mem usage    Increment   Line Contents
================================================  

1266    275.6 MiB    171.9 MiB           for i in range(0, NumMeasurements):

用于内部端口切换循环

1323    188.7 MiB     82.7 MiB           for g in range(int(self.start_port1),int(self.stop_port1)+1):

有没有办法发布'各个循环完成后的这个内存?有没有更好的方法来实现这个循环?我理解正确吗?我运行此代码,4小时后我的RAM增加了5 GB!

第二个部分正在释放引用的内存。展览A,是这一行

1481    186.3 MiB     79.9 MiB               self.figure = Figure(figsize = (5,3.72))

我尝试过plt.close(self.figure)gc.collect()del self.figure。似乎没有释放那种记忆。相反,这条线似乎释放了记忆。

1471    198.9 MiB    -70.0 MiB                   ref_phase = self.xpS21plot['port'+ str(1)]

- OP更新 -

正在进行绘图的部分是:

 ######All Phase Reference Statements
        self.figure = Figure(figsize = (5,3.72))
        self.figure.gca().grid(True)
        self.figure.gca().set_ylabel('Magnitude')
        self.figure.gca().set_xlabel('Freq (MHz)')
        self.figure.gca().set_title('Magnitude (current)')
        #self.figure.gca().set_ylim(-80,20)
        self.axes = self.figure.add_subplot(111)
        self.canvas = FCW(self.panel1, -1, self.figure)
        #Figure.set_xlabel(self.figure, 'oops')
        # Start plot Mag setup
        for k in range(int(self.start_port1),int(self.start_port1) + len(self.magS21)):
            self.axes.plot(self.yplot['port' + str(k)],self.xS21plot['port'+ str(k)])

0 个答案:

没有答案