Hello, I have the following code, where I noticed a memory leak with +=, but not with + alone. import numpy m=numpy.matrix(numpy.ones((23,23))) for i in range(10000000): m+=0.0 # keeps growing in memory # m=m+0.0 # is stable in memory My version of python is 2.5, numpy 1.3.0, but it also causes memory buildup in 2.6 with numpy 1.4.0, as distributed by the Enthought Python Distribution. It's easy to work around, but could cause someone some problems. Anyone else get this? bb  Brian Blais bblais@bryant.edu http://web.bryant.edu/~bblais http://bblais.blogspot.com/
On Fri, May 14, 2010 at 2:43 PM, Brian Blais <bblais@bryant.edu> wrote:
Hello,
I have the following code, where I noticed a memory leak with +=, but not with + alone. import numpy
m=numpy.matrix(numpy.ones((23,23)))
for i in range(10000000): m+=0.0 # keeps growing in memory # m=m+0.0 # is stable in memory
My version of python is 2.5, numpy 1.3.0, but it also causes memory buildup in 2.6 with numpy 1.4.0, as distributed by the Enthought Python Distribution.
It's easy to work around, but could cause someone some problems. Anyone else get this?
I get it also with python 2.5 numpy 1.4.0 Who owns the data ?
m=np.matrix(np.ones((3,3))) m.flags C_CONTIGUOUS : True F_CONTIGUOUS : False OWNDATA : True WRITEABLE : True ALIGNED : True UPDATEIFCOPY : False
m+=0 m.flags C_CONTIGUOUS : True F_CONTIGUOUS : False OWNDATA : False < GONE WRITEABLE : True ALIGNED : True UPDATEIFCOPY : False
Josef
bb
 Brian Blais bblais@bryant.edu http://web.bryant.edu/~bblais http://bblais.blogspot.com/
_______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpydiscussion
On Fri, May 14, 2010 at 3:26 PM, <josef.pktd@gmail.com> wrote:
On Fri, May 14, 2010 at 2:43 PM, Brian Blais <bblais@bryant.edu> wrote:
Hello,
I have the following code, where I noticed a memory leak with +=, but not with + alone. import numpy
m=numpy.matrix(numpy.ones((23,23)))
for i in range(10000000): m+=0.0 # keeps growing in memory # m=m+0.0 # is stable in memory
My version of python is 2.5, numpy 1.3.0, but it also causes memory buildup in 2.6 with numpy 1.4.0, as distributed by the Enthought Python Distribution.
It's easy to work around, but could cause someone some problems. Anyone else get this?
I get it also with python 2.5 numpy 1.4.0
Who owns the data ?
m=np.matrix(np.ones((3,3))) m.flags C_CONTIGUOUS : True F_CONTIGUOUS : False OWNDATA : True WRITEABLE : True ALIGNED : True UPDATEIFCOPY : False
m+=0 m.flags C_CONTIGUOUS : True F_CONTIGUOUS : False OWNDATA : False < GONE WRITEABLE : True ALIGNED : True UPDATEIFCOPY : False
Josef
Maybe it's not a "true" memory leak, my python process eventually garbage collected the extra memory that was built up. Josef
bb
 Brian Blais bblais@bryant.edu http://web.bryant.edu/~bblais http://bblais.blogspot.com/
_______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpydiscussion
On May 14, 2010, at 16:03 , josef.pktd@gmail.com wrote:
On Fri, May 14, 2010 at 3:26 PM, <josef.pktd@gmail.com> wrote:
On Fri, May 14, 2010 at 2:43 PM, Brian Blais <bblais@bryant.edu> wrote:
Hello,
I have the following code, where I noticed a memory leak with +=, but not with + alone. import numpy
m=numpy.matrix(numpy.ones((23,23)))
for i in range(10000000): m+=0.0 # keeps growing in memory # m=m+0.0 # is stable in memory
Maybe it's not a "true" memory leak, my python process eventually garbage collected the extra memory that was built up.
It crashed a simulator of mine (at least in Windows), until I figured out the workaround, so I would consider it a leak. :) it certainly shouldn't grow like that. if anything m=m+0.0 should chew of *more* memory than m+=0.0. bb  Brian Blais bblais@bryant.edu http://web.bryant.edu/~bblais http://bblais.blogspot.com/
participants (2)

Brian Blais

josef.pktd＠gmail.com