我的整体问题是清理内存。现在问题分为两部分。 第一个是' 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)])