Hi Jakob, yes your solution works and is more elegant! See the code at the end of this message. However using the original code with the Agg backend instead of WXAgg also works fine, so there is probably a memory leakage problem with WXAgg (see the post of David and my reply). Thank for your reply and suggestion!
Alain CODE # BOF import os, tempfile import matplotlib.pyplot as plt import numpy as np import matplotlib as mpl print '\nBackend:\n' + mpl.get_backend() + '\n' def plot_density(filename,i,t,psi_Na, fig): plt.imshow(abs(psi_Na)**2,origin = 'lower') filename = os.path.join(tempfile.gettempdir(), filename + '_%04d.png'%i) plt.savefig(filename) plt.clf() if __name__ == "__main__": x = np.linspace(-6e-6,6e-6,128,endpoint=False) y = np.linspace(-6e-6,6e-6,128,endpoint=False) X,Y = np.meshgrid(x,y) k = 1000000 omega = 200 times = np.linspace(0,100e-3,100,endpoint=False) fig = plt.figure(figsize=(8,6)) for i,t in enumerate(times): psi_Na = np.sin(k*X-omega*t) plot_density('wavefunction',i,t,psi_Na, fig) print i plt.close() # EOF Jakob Gager wrote: > > Hi, > > I'm not sure if it helps, but you can try to plot always into the same > figure object instead of creating a new one every time you call the > plot_density function. > > I would create one figure in advance and pass this the plot_density > method. Within the method set the figure active (pl.figure(fig.number)), > plot the data, save the figure and clear the figure canvas (pl.clf() > should work here, I guess). > Well, as mentioned I'm not sure but you could give it a try. > > br > Jakob > > Alain Francés wrote: >> Hi, http://old.nabble.com/file/p31858795/ErrorMsg.png >> >> indeed I forgot to remove these line from previous tests, sorry. >> >> However it doesn't affect the code behaviour, the problem remains (it >> fills >> the RAM memory and raises a memory error, see img in att.). >> >> Alain >> >> >> Davidmh wrote: >>> You are importing pylab again before each plot. You have loaded it >>> before. >>> >>> for i,t in enumerate(times): >>> import pylab as pl # <--ERASE THIS >>> >>> >>> >>> On Wed, Jun 15, 2011 at 12:10 PM, Alain Pascal Frances >>> <frances17...@itc.nl> wrote: >>>> Hi, >>>> >>>> I have a script that creates and saves figures in a loop. The memory is >>>> increasing at each figure and is not released back, rising a Memory >>>> error. >>>> I used the close() function on the figure object as well as >>>> gc.collect(), >>>> but no effect. >>>> >>>> I searched on the net and found a similar problem at >>>> http://stackoverflow.com/questions/3623600/python-matplotlib-memory-not-being-released-when-specifying-figure-size. >>>> The problem here was solved using the close() function but in my case, >>>> as >>>> refered before, it doens't work (see code below). >>>> >>>> I'm using Python 2.6.6, matplotlib 1.0.1, WXagg as backend, on >>>> windows7. >>>> >>>> Thanks for help! >>>> >>>> Alain >>>> >>>> >>>> CODE: >>>> >>>> import pylab as pl >>>> import os, tempfile >>>> def plot_density(filename,i,t,psi_Na): >>>> pl.figure(figsize=(8,6)) >>>> pl.imshow(abs(psi_Na)**2,origin = 'lower') >>>> filename = os.path.join(tempfile.gettempdir(), filename + >>>> '_%04d.png'%i) >>>> pl.savefig(filename) >>>> pl.clf() >>>> pl.close() >>>> if __name__ == "__main__": >>>> x = pl.linspace(-6e-6,6e-6,128,endpoint=False) >>>> y = pl.linspace(-6e-6,6e-6,128,endpoint=False) >>>> X,Y = pl.meshgrid(x,y) >>>> k = 1000000 >>>> omega = 200 >>>> times = pl.linspace(0,100e-3,100,endpoint=False) >>>> for i,t in enumerate(times): >>>> import pylab as pl >>>> psi_Na = pl.sin(k*X-omega*t) >>>> plot_density('wavefunction',i,t,psi_Na) >>>> print i >>>> ------------------------------------------------------------------------------ > > > > ------------------------------------------------------------------------------ > EditLive Enterprise is the world's most technically advanced content > authoring tool. Experience the power of Track Changes, Inline Image > Editing and ensure content is compliant with Accessibility Checking. > http://p.sf.net/sfu/ephox-dev2dev > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > -- View this message in context: http://old.nabble.com/Memory-increasing-while-plotting-in-loop-tp31850163p31861342.html Sent from the matplotlib - users mailing list archive at Nabble.com. ------------------------------------------------------------------------------ EditLive Enterprise is the world's most technically advanced content authoring tool. Experience the power of Track Changes, Inline Image Editing and ensure content is compliant with Accessibility Checking. http://p.sf.net/sfu/ephox-dev2dev _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users