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

Reply via email to