pyplot.savefig()循环python内部的内存泄漏

时间:2019-02-28 06:59:09

标签: python python-2.7 matplotlib memory-management memory-leaks

我正在绘制条形图,并使用plt.savefig()将图另存为.png

这是代码:-

import matplotlib
matplotlib.use('agg')

import matpltlib.pyplot as plt 

Plot_Value = [[13,6],[4,3],[6,8]]
x_axis = ["r1","r2"]
loop_value = ["L 1","L 2","L 3"]
for i in range(len(loop_value)):

        fig = plt.figure()
        plt.xticks(range(1, len(x_axis) + 1), x_axis,rotation=30)
        plt.yticks(range(max(Plot_Value[i]) + 4))
        BAR = plt.bar([x + 1 for x in range(len(x_axis))],Plot_Value[i])
        fig.suptitle('SAVEFIG EXAMPLE', fontsize=20)
        plt.xlabel('X-AXIS', fontsize=15)
        plt.ylabel('Y-AXIS', fontsize=15)

        for rect in  BAR:
            height = rect.get_height()
            plt.text(rect.get_x() + rect.get_width()/2.0, height, '%d' % int(height), ha='center', va='bottom')

        plt.savefig(str(loop_value[i].split(' ')[0])+str(loop_value[i].split(' ')[1])+".png", bbox_inches = "tight")
        plt.close()

上面的代码是来自大型python文件的小代码。 直到这段代码无效,我的python程序的内存使用率一直保持不变。但是,一旦该代码激活,我的内存就会达到35MB,并且在绘图结束并且程序移至文件中的其他功能之后,该内存不会释放。该代码必须多次激活,每次执行时我都无法承受这些内存峰值。

我用过plt.close(), plt.close('all'), plt.clf(), plt.cla()

使用过del fig(我知道这不会影响此问题)

在循环内和循环后也尝试了gc.collect()

我该如何解决,或者我错过了什么?

0 个答案:

没有答案