|
From: Michael D. <md...@st...> - 2013-10-14 17:20:54
|
I haven't had a chance to look into where the memory is actually
leaking, ion/ioff are intended for interactive use, and here you are
saving a large number of plots to files. Why do you need ion at all?
Mike
On 10/14/2013 08:51 AM, OCuanachain, Oisin (Oisin) wrote:
>
> Hi,
>
> I am having problems with a script. It runs a number of iterations and
> plots and saves a number of plots on each iteration. After the plots
> have been saved I issue the pyplot.close('all') command so despite
> many plots being created only 4 should be open at any given time which
> should not cause any memory problems. When I run the script however I
> see the RAM usage gradually growing without bound and eventually
> causing the script to crash. Interestingly I have found if I comment
> out the pyplot.ion() and pyplot.ioff() the problem vanishes. So I do
> have a workaround but it would still be good to have this fixed in
> case I forget about it in future and loose another weekend's work.
>
> My OS is Windows XP Service Pack 3
>
> Python 2.6
>
> Matplotlib 1.0.1
>
> The code below is a stripped down version of my script which still
> exhibits the problem.
>
> Oisín.
>
> # -*- coding: utf-8 -*-
>
> import sys
>
> import time
>
> import numpy as np
>
> from matplotlib import pyplot
>
> import os
>
> # Main script body
>
> try:
>
> for gain in range(1,20,2):
>
> for PortToTest in range(8):
>
> dirname = '.\crash'
>
> f = open(dirname + '\\results.m','w')
>
> runname = '\P' + str(PortToTest) + str(gain) + \
>
> '_' + time.strftime('d%dh%Hm%Ms%S')
>
> dirname = dirname + runname
>
> os.mkdir(dirname)
>
> os.system('copy ' + sys.argv[0] + ' ' + dirname )
>
> nIts = 50
>
> # Decimate data for plotting if many iterations are run
>
> if(nIts>10):
>
> echoPlotDec = 10
>
> else:
>
> echoPlotDec = 1
>
> ResidN = np.zeros((4,2*nIts))
>
> MaxSl = np.zeros((4,2*nIts))
>
> MaxOld = np.zeros((4,2*nIts))
>
> MaxNew = np.zeros((4,2*nIts))
>
> EchoA = np.zeros((2*nIts,160))
>
> for kk in range(2*nIts):
>
> ResidN[0,kk] = np.random.rand(1,1)
>
> ResidN[1,kk] = np.random.rand(1,1)
>
> ResidN[2,kk] = np.random.rand(1,1)
>
> ResidN[3,kk] = np.random.rand(1,1)
>
> MaxSl[0,kk] = np.random.rand(1,1)
>
> MaxSl[1,kk] = np.random.rand(1,1)
>
> MaxSl[2,kk] = np.random.rand(1,1)
>
> MaxSl[3,kk] = np.random.rand(1,1)
>
> MaxOld[0,kk] = np.random.rand(1,1)
>
> MaxOld[1,kk] = np.random.rand(1,1)
>
> MaxOld[2,kk] = np.random.rand(1,1)
>
> MaxOld[3,kk] = np.random.rand(1,1)
>
> MaxNew[0,kk] = np.random.rand(1,1)
>
> MaxNew[1,kk] = np.random.rand(1,1)
>
> MaxNew[2,kk] = np.random.rand(1,1)
>
> MaxNew[3,kk] = np.random.rand(1,1)
>
> EchoA[kk,:] = np.random.rand(1,160)
>
> f.close()
>
> pyplot.ion()
>
> pyplot.figure()
>
> pyplot.hold(True)
>
> LegendTexts = ("A","B","C","D")
>
> pyplot.title("R (" + runname +")")
>
> pyplot.xlabel("Index")
>
> pyplot.ylabel("Noise (dB)")
>
> pyplot.grid(True)
>
> pyplot.hold(True)
>
> pyplot.plot(np.transpose(ResidN),'.-')
>
> pyplot.legend(LegendTexts,loc=1)
>
> pyplot.axis([0, 2*nIts, -33, -25])
>
> pyplot.savefig(dirname + '\\results.emf',format='emf')
>
> pyplot.figure()
>
> pyplot.hold(True)
>
> pyplot.title("Coefs")
>
> pyplot.xlabel("Coef Index")
>
> pyplot.ylabel("Coef Value")
>
> pyplot.grid(True)
>
> pyplot.hold(True)
>
> pyplot.plot(np.transpose(EchoA[0:nIts-1:echoPlotDec,:]),'.-')
>
> pyplot.plot(np.transpose(EchoA[nIts:2*nIts-1:echoPlotDec,:]),'*-')
>
> pyplot.axis([0, 160, -0.5, 2])
>
> pyplot.savefig(dirname + '\\CoefsA.emf',format='emf')
>
> pyplot.figure()
>
> pyplot.hold(True)
>
> pyplot.title("MaxAbs, Old = '.', New = '*' ")
>
> pyplot.xlabel("Iteration")
>
> pyplot.ylabel("o/p (LSBs)")
>
> pyplot.grid(True)
>
> pyplot.hold(True)
>
> pyplot.plot(np.transpose(MaxOld),'.-')
>
> pyplot.plot(np.transpose(MaxNew),'*-')
>
> pyplot.axis([0, 2*nIts, 32, 128])
>
> pyplot.savefig(dirname + '\\MaxAbsA.emf',format='emf')
>
> pyplot.figure()
>
> pyplot.hold(True)
>
> pyplot.title("MaxAbs")
>
> pyplot.xlabel("Iteration")
>
> pyplot.ylabel("(LSBs)")
>
> pyplot.grid(True)
>
> pyplot.hold(True)
>
> pyplot.plot(np.transpose(MaxSl),'.-')
>
> pyplot.axis([0, 2*nIts, 0, 64])
>
> pyplot.savefig(dirname + '\\MaxAbsSl.emf',format='emf')
>
> pyplot.close('all')
>
> except RuntimeError, msg:
>
> print 'Exception occurred in main script body'
>
> print >>sys.stderr, msg
>
> raise
>
> finally:
>
> print "Test done"
>
> # Display plots
>
> pyplot.ioff()
>
>
>
> ------------------------------------------------------------------------------
> October Webinars: Code for Performance
> Free Intel webinars can help you accelerate application performance.
> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
> the latest Intel processors and coprocessors. See abstracts and register >
> http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
>
>
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
--
_
|\/|o _|_ _. _ | | \.__ __|__|_|_ _ _ ._ _
| ||(_| |(_|(/_| |_/|(_)(/_|_ |_|_)(_)(_)| | |
http://www.droettboom.com
|