matplotlib.pyplot复用figure
程序员文章站
2022-03-19 15:09:59
...
RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (matplotlib.pyplot.figure
) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam figure.max_open_warning
).
原因:
- matplotlib 维护的 figure 有数量上限(RuntimeWarning: More than 20 figures have been opened.)
- 不断的创建新的 figure 实例,容易造成内存泄漏。
于是,合理地复用figure,能大大的提高运行速度。
需要用到的函数:
-
plt.cla()
clears an axis, i.e. the currently active axis in the current figure. It leaves the other axes untouched. -
plt.clf()
clears the entire current figure with all its axes, but leaves the window opened, such that it may be reused for other plots. -
plt.close()
closes a window, which will be the current window, if not specified otherwise. plt.close(‘all’) will close all open figures.
示例:
def show(Img,name):
plt.figure()
for i in range(Img.shape[1]):
for j in range(Img.shape[2]):
plt.axis('off')
plt.title(name+str(i)+'-'+str(j))
plt.imshow(Img[0,i,j,:,:].detach().cpu().numpy())
new_path = os.path.join(saved_path,name)
if not os.path.exists(new_path):
os.makedirs(new_path)
plt.savefig(os.path.join(new_path,str(i)+'-'+str(j)+'.png'))
plt.clf()
plt.close()