我有一个数据分析模块,该模块包含多次调用Matplotlib pyplot API的函数,每次运行最多生成30个图形。 这些数字生成后立即被写入磁盘,因此我需要从内存中清除它们。 目前,在每个功能结束时,
import matplotlib.pyplot as plt
plt.clf()
但是我不太确定该语句是否可以清除内存。 我特别担心,因为我发现每次运行模块进行调试时,我的可用内存空间都会不断减少。 每次将图写入磁盘后,任何人都可以启发我进行真正清除内存的操作吗?
谢谢。
您是否尝试过plt.close("all")? 我有一个脚本,该脚本创建了约60个图表,每个图表有3个轴。 我在每次迭代结束时使用它。 内存消耗似乎很正常。
感谢您的回答! 有效! 而且我还发现了这个很棒的stackoverflow帖子stackoverflow.com/questions/8213522/可以回答我的问题!
帖子stackoverflow.com/questions/8213522/不包括plt.close(" all")。 我尝试使用该文章中所有建议的选项,但是只有plt.close(" all")解决了我自己的问题。
何时使用cla(),clf()或close()在matplotlib中清除图的可能重复项?
尤其是当您运行多个进程或线程时,最好定义图形变量并直接使用它:
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)