I generate a lots of figures with a script which I do not display but store to harddrive. After a while I get the message
/usr/lib/pymodules/python2.7/matplotlib/pyplot.py:412: 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 rcParamfigure.max_num_figures
).max_open_warning, RuntimeWarning)
Thus, I tried to close or clear the figures after storing. So far, I tried all of the followings but no one works. I still get the message from above.
plt.figure().clf()
plt.figure().clear()
plt.clf()
plt.close()
plt.close('all')
plt.close(plt.figure())
And furthermore I tried to restrict the number of open figures by
plt.rcParams.update({'figure.max_num_figures':1})
Here follows a piece of sample code that behaves like described above. I added the different options I tried as comments at the places I tried them.
from pandas import DataFrame
from numpy import random
df = DataFrame(random.randint(0,10,40))import matplotlib.pyplot as plt
plt.ioff()
#plt.rcParams.update({'figure.max_num_figures':1})
for i in range(0,30):fig, ax = plt.subplots()ax.hist([df])plt.savefig("/home/userXYZ/Development/pic_test.png")#plt.figure().clf()#plt.figure().clear()#plt.clf()#plt.close() # results in an error#plt.close('all') # also error#plt.close(plt.figure()) # also error
To be complete, that is the error I get when using plt.close
:
can't invoke "event" command: application has been destroyedwhile executing "event generate $w <>"(procedure "ttk::ThemeChanged" line 6)invoked from within "ttk::ThemeChanged"