Re: memory leak problem with arrays
- From: "sonjaa" <sonja.coussell@xxxxxxxxx>
- Date: 15 Jun 2006 09:45:19 -0700
Carl Banks wrote:
sonjaa wrote:
I've created a cellular automata program in python with the numpy array
extensions. After each cycle/iteration the memory used to examine and
change the array as determined by the transition rules is never freed.
Are you aware that slicing shares memory? For example, say you defined
a grid to do the automata calculations on, like this:
grid = numpy.zeros([1000,1000])
And then, after running it, you took a tiny slice as a region of
interest, for example:
roi = grid[10:20,10:20]
Then deleted grid:
del grid
Then stored roi somewhere, for example:
run_results.append(roi)
If you do this, the memory for the original grid won't get freed.
Although grid was deleted, roi still contains a reference to the whole
1000x1000 array, even though it's only a tiny slice of it. Your poorly
worded description--no offense--of what you did suggests that this is a
possibility in your case. I recommend you try to create a new array
out of any slices you make, like this (but ONLY if the slice doesn't
depend on the memory being shared):
roi = numpy.array(grid[10:20,10:20])
This time, when you del grid, there is no object left referencing the
array data, so it'll be freed.
This might not be your problem. Details are important when asking
questions, and so far you've only given us enough to speculate with.
Carl Banks
I believe I understand your post. I don't think I was slicing the
array, I was only changing the values of the array.
I will try your suggestion and let you know how it goes
thanks
Sonja
.
- References:
- memory leak problem with arrays
- From: sonjaa
- Re: memory leak problem with arrays
- From: Carl Banks
- memory leak problem with arrays
- Prev by Date: Re: Numerics, NaNs, IEEE 754 and C99
- Next by Date: Re: code folding, a unique problem to python?
- Previous by thread: Re: memory leak problem with arrays
- Next by thread: __lt__ slowing the "in" operator even if not called
- Index(es):
Relevant Pages
|