[Numpy-discussion] MemoryError in numpy.test() on AIXinstallation
Charles R Harris
charlesr.harris at gmail.com
Mon Apr 27 16:10:59 EDT 2009
On Mon, Apr 27, 2009 at 1:59 PM, Whitcomb, Mr. Tim <
tim.whitcomb at nrlmry.navy.mil> wrote:
> >> ----------------------------------
> >> 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?
>
It could, but I think AIX on the PPC is big endian, as is OSX, and I would
expect endian problems to show up in many other places, not just for empty
arrays. Hmm...
Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20090427/32cdc247/attachment.html>
More information about the NumPy-Discussion
mailing list