[Numpy-discussion] MemoryError in numpy.test() on AIXinstallation

Whitcomb, Mr. Tim tim.whitcomb at nrlmry.navy.mil
Mon Apr 27 15:59:10 EDT 2009


>> ----------------------------------
>>		import numpy as np
>>		from cStringIO import StringIO
>>		from numpy.lib import format
>>		
>>		f = StringIO()
>>		a = np.array([], dtype='object')
>>		format.write_array(f, a)
>>		f2 = StringIO(f.getvalue())
>>		a2 = format.read_array(f2)
>>		
>>		print('%s %s' % (a, a2))
>>		-----------------------------------
		
>>		On the AIX/PPC install, this crashes with:
>>		Traceback (most recent call last):
>>		 File "<stdin>", line 1, in <module>
>>		 File "crash_numpy.py", line 10, in <module>
>>		   a2  = format.read_array(f2)
>>		 File
>>
"$HOME/.local/python/lib/python2.5/site-packages/numpy/lib/format.py",
>>		line 362, in read_array
>>		   array = cPickle.load(fp)
>>		MemoryError

>	I think this means out of memory, which is probably not correct.
What happens if you simply pickle and object array? Something like
>	
>	If that fails, try it using pickle instead of cPickle, then with
a non-empty object array like a = np.array([None,None], dtype='object')

Just trying to pickle an empty object array:
-------
pickle_file = 'foo.pkl'
a = np.array([], dtype='object')
cPickle.dump(a, open(pickle_file, 'w'))
b = cPickle.load(open(pickle_file, 'r'))
print(b)
-------
Traceback (most recent call last):
  File "c_harris_test.py", line 7, in <module>
    b = cPickle.load(open(pickle_file, 'r'))
MemoryError

Changing 'cPickle' to 'pickle' crashes again, with:
Traceback (most recent call last):
  File "c_harris_test.py", line 7, in <module>
    b = pickle.load(open(pickle_file, 'r'))
  File "/site/python-2.5.2/lib/python2.5/pickle.py", line 1370, in load
    return Unpickler(file).load()
  File "/site/python-2.5.2/lib/python2.5/pickle.py", line 858, in load
    dispatch[key](self)
  File "/site/python-2.5.2/lib/python2.5/pickle.py", line 1217, in
load_build
    setstate(state)
MemoryError

If I try either pickle or cPickle with a non-empty object (e.g.
np.array([None])), it works fine.  Using np.array([ [] ]) crashes as
well.  If I take Numpy out of the loop, I can successfully pickle an
empty list with no issues.  Would platform endian-ness cause a problem?

Tim




More information about the NumPy-Discussion mailing list