Hi,
I am using matplotlib with python to generate a bunch of charts. I use IDLE, have numpy version 1.0, and pylab version 2.5 with TkAgg if that is relavant. My
code works fine for a single iteration, which creates and saves 4
different charts. The trouble is that when I try to run it for the
entire set (about 200 items) it can run for 12 items at a time, generating 48 charts. On the
13th, I get an error from matplotlib that says it can’t access data.
However, if I start the program at the point it just failed, it works
fine and will create the charts for the next 12 before failing. I
assume that I am not closing the files properly somehow or otherwise
misallocating memory. I tried just reimporting pylab each iteration,
but that didn’t help. This is the function that creates a chart:
#create and save the figure
def CreateFigure(state, facility, unit, SO2, increment, year, P99):
size = len(SO2)
#Create Plot
figure(1, figsize=(10,8))
bar(range(1, size+2), SO2, width=0.1, color='k')
grid(True)
xlim(0,size)
ylim(0, 1.1*SO2[-1])
ylabel('SO2 [lb/hr]')
heading = ConstructFigName(state, facility, unit, increment, year)
title(heading)
#set handles
xticklines = getp(gca(), 'xticklines')
xgridlines = getp(gca(), 'xgridlines')
xticklabels = getp(gca(), 'xticklabels')
yticklines = getp(gca(), 'yticklines')
#set properties
setp(xticklines, visible=False)
setp(xgridlines, visible=False)
setp(xticklabels, visible=False)
setp(yticklines, visible=False)
axhspan(P99, P99, lw=3, ec='r', fc='r')
ax = gca()
P99 = '%0.1f' % P99
text(0.01, 0.95, '99th Percentile: '+P99+' lb/hr',
transform=ax.transAxes)
figpath = ConstructFigPath(state, facility, unit, increment, year)
savefig(figpath)
close()
Can you see the problem? If there is nothing obviously wrong… I tried to run the memory leak algorithm from the website, but the line:
a2 = os.popen(‘ps -p %d -o rss,sz’ % pid).readlines()
generates an empty list rather than information about about memory, and I am not clear on how to modify it to do something useful.
thanks,
-Lisa