如何彻底清除所有Matplotlib图的内存

2024-05-17 05:41:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据分析模块,其中包含多次调用Matplotlib pyplot API以在每次运行中生成最多30个图形的函数。这些数字在生成后会立即写入磁盘,因此我需要从内存中清除它们。目前,在我的每一个功能结束时

import matplotlib.pyplot as plt

plt.clf()

不过,我不太确定这句话是否真的能清除记忆。我特别担心,因为每次运行模块进行调试时,我的可用内存空间都在不断减少。有谁能告诉我,每次我把这些图写到磁盘上之后,我需要做些什么来真正清除我的记忆?

谢谢你。


Tags: 模块记忆函数内存import功能api图形
2条回答

特别是当您运行多个进程或线程时,最好定义您的figure变量并直接使用它:

from matplotlib import pyplot as plt

f = plt.figure()
f.clear()
plt.close(f)

无论如何,必须结合使用plt.clear()和plt.close()

I have data analysis module that contains functions which call on Matplotlib pyplot API multiple

可以编辑调用matplotlib的函数吗?我也面临同样的问题,我试着听从命令,但没有一个奏效。

plt.close(fig)
fig.clf()
gc.collect()
%reset_selective -f fig

然后有一个技巧对我起作用了,不是每次都创建一个新的图形,而是将同一个fig对象传递给函数,这解决了我的问题。

例如使用

fig = plt.figure()
for i in range(100):
    plt.plot(x,y)

而不是

for i in range(100):
    fig = plt.figure()
    plt.plot(x,y)

相关问题 更多 >