Я рисую большое количество сеток фигур и получаю предупреждение:
/ home / michael / miniconda2 / envs / pt / lib / python3.6 / site-packages / matplotlib / pyplot.py: 537: RuntimeWarning: открыто более 20 фигур.Рисунки, созданные через интерфейс pyplot (matplotlib.pyplot.figure
), сохраняются до тех пор, пока не будут явно закрыты, и могут занимать слишком много памяти.(Чтобы контролировать это предупреждение, смотрите rcParam `figure.max_open_warning).
Что более важно, я получаю утечку памяти.Как правильно очистить участки, чтобы устранить эту утечку?
def place_fig(values, rows=1, columns=1, r=0, c=0, label='test'):
ax = plt.subplot2grid((rows, columns), (r, c))
ax.hist(values, label=label)
plt.legend(loc='upper right')
ax.legend(loc='upper right')
def plot_grid(arrays, path=None, filename=''):
plt.figure()
for c in range(5):
for array, r in zip(arrays[c], range(5)):
place_fig(array, rows=5, columns=5, r=r, c=c)
plt.savefig(path + filename)
plt.clf()
def plot_layers(path=None, i=0, values_3d=None):
array1 = []
array2 = []
array3 = []
array4 = []
array5 = []
array_list = [array1, array2, array3, array4, array5]
for j in range(5):
for array, values in zip(array_list, values_3d[j]):
array.append(values)
plot_grid([array1, array2, array3, array4, array5], path=path, filename='iter_{:d}'.format(i))
for i in range(1000):
values_3d = np.random.randn(5, 5, 10000)
plot_layers(path='plots/', i=i, values_3d=values_3d)