pyplot.savefig () Утечка памяти внутри цикла python - PullRequest
0 голосов
/ 28 февраля 2019

Я строю гистограммы и сохраняю график как .png, используя plt.savefig ()

Вот код: -

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.Но как только этот код становится активным, моя память снимает 35 МБ, и эта память не освобождается после завершения печати, и программа переходит к другим функциям в файле.Этот код должен быть активным много раз, и я не могу позволить себе эти пики памяти каждый раз, когда он выполняется.

Я использовал plt.close(), plt.close('all'), plt.clf(), plt.cla()

использовал del fig (который, я знаю, не повлияетэта проблема)

Также пробовал gc.collect() после и внутри цикла ничего не помогло.

Как я могу решить эту проблему, или я что-то упустил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...