python Matplotlib在关闭函数后不会释放RAM内存

nr7wwzry  于 2024-01-05  发布在  Python
关注(0)|答案(1)|浏览(330)

我正在编写一个Python脚本,它可以生成许多图。这些图是从主程序中调用的,主程序递归地调用它们(我的意思是数百次)。
当main函数运行时,我看到我的计算机的RAM内存在执行过程中是如何填满的。而且,即使在main函数完成后,RAM内存的使用率仍然比主程序执行前高得多。有时它甚至可以完全填满RAM内存。
我尝试删除最重的变量并使用垃圾收集器,但净RAM内存使用率总是更高。为什么会发生这种情况?
我附上了一个简单的(和夸张的)例子,我的一个功能,我使用内存分析器看到逐行的内存使用。

  1. Line # Mem usage Increment Occurrences Line Contents
  2. =============================================================
  3. 15 100.926 MiB 100.926 MiB 1 @profile
  4. 16 def my_func():
  5. 17 108.559 MiB 7.633 MiB 1 a = [1] * (10 ** 6)
  6. 18 261.148 MiB 152.590 MiB 1 b = [2] * (2 * 10 ** 7)
  7. 19 421.367 MiB 160.219 MiB 1 c = a + b
  8. 20 428.609 MiB 7.242 MiB 1 plt.figure(dpi=10000)
  9. 21 430.328 MiB 1.719 MiB 1 plt.plot(np.random.rand(1000),np.random.rand(1000))
  10. 22 487.738 MiB 57.410 MiB 1 plt.show()
  11. 23 487.738 MiB 0.000 MiB 1 plt.close('all')
  12. 24 167.297 MiB -320.441 MiB 1 del a,b,c
  13. 25 118.922 MiB -48.375 MiB 1 print(gc.collect())

字符串
我尝试删除最重的变量并使用垃圾收集器,但净RAM内存使用率总是更高。

ctzwtxfj

ctzwtxfj1#

我终于知道发生了什么。这是所有关于Spyder,如果我执行代码与股票python终端有没有内存泄漏。

相关问题