Nagu wrote:
I am trying to save a dictionary of size 65000X50 to a local file and
I get the memory error problem.

How do I go about resolving this? Is there way to partition the pickle
object and combine later if this is a problem due to limited resources
(memory) on the machine (it is 32 bit machine Win XP, with 4GB RAM).


Here is the detail description of the error:

Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    s = pickle.dumps(itemsim)
  File "C:\Python25\lib\pickle.py", line 1366, in dumps
    Pickler(file, protocol).dump(obj)
  File "C:\Python25\lib\pickle.py", line 224, in dump
    self.save(obj)
  File "C:\Python25\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Python25\lib\pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "C:\Python25\lib\pickle.py", line 663, in _batch_setitems
    save(v)
  File "C:\Python25\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Python25\lib\pickle.py", line 600, in save_list
    self._batch_appends(iter(obj))
  File "C:\Python25\lib\pickle.py", line 615, in _batch_appends
    save(x)
  File "C:\Python25\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Python25\lib\pickle.py", line 562, in save_tuple
    save(element)
  File "C:\Python25\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Python25\lib\pickle.py", line 477, in save_float
    self.write(FLOAT + repr(obj) + '\n')
MemoryError: out of memory

I've generated some rather large pickled dicts before and have never seen this before. You can, of course, split your dictionary into several smaller ones, pickle them individually and combine them back together on unpickle/read using the dictionary update method.

BTW - 32-bit Windows can only address 3.5Gb of memory maximum. If you have more installed, it is ignored.

-Larry
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to