我正在编写一个Python脚本,它可以生成许多图。这些图是从主程序中调用的,主程序递归地调用它们(我的意思是数百次)。
当main函数运行时,我看到我的计算机的RAM内存在执行过程中是如何填满的。而且,即使在main函数完成后,RAM内存的使用率仍然比主程序执行前高得多。有时它甚至可以完全填满RAM内存。
我尝试删除最重的变量并使用垃圾收集器,但净RAM内存使用率总是更高。为什么会发生这种情况?
我附上了一个简单的(和夸张的)例子,我的一个功能,我使用内存分析器看到逐行的内存使用。
Line # Mem usage Increment Occurrences Line Contents
=============================================================
15 100.926 MiB 100.926 MiB 1 @profile
16 def my_func():
17 108.559 MiB 7.633 MiB 1 a = [1] * (10 ** 6)
18 261.148 MiB 152.590 MiB 1 b = [2] * (2 * 10 ** 7)
19 421.367 MiB 160.219 MiB 1 c = a + b
20 428.609 MiB 7.242 MiB 1 plt.figure(dpi=10000)
21 430.328 MiB 1.719 MiB 1 plt.plot(np.random.rand(1000),np.random.rand(1000))
22 487.738 MiB 57.410 MiB 1 plt.show()
23 487.738 MiB 0.000 MiB 1 plt.close('all')
24 167.297 MiB -320.441 MiB 1 del a,b,c
25 118.922 MiB -48.375 MiB 1 print(gc.collect())
字符串
我尝试删除最重的变量并使用垃圾收集器,但净RAM内存使用率总是更高。
1条答案
按热度按时间ctzwtxfj1#
我终于知道发生了什么。这是所有关于Spyder,如果我执行代码与股票python终端有没有内存泄漏。