Próbuję serializować duży obiekt Pythona, złożony z krotki numpy tablic przy użyciu pickle/cPickle i gzip. Procedura działa dobrze aż do pewnego rozmiaru danych, a potem pojawia się następujący błąd:Python gzip: Rozmiar OverflowError nie mieści się w int
--> 121 cPickle.dump(dataset_pickle, f)
***/gzip.pyc in write(self, data)
238 print(type(self.crc))
239 print(self.crc)
--> 240 self.crc = zlib.crc32(data, self.crc) & 0xffffffffL
241 self.fileobj.write(self.compress.compress(data))
OverflowError: size does not fit in an int
Wielkość numpy tablicy jest około 1,5 GB i łańcuch wysłany do zlib.crc32 przekroczy 2 GB . Pracuję na maszynie 64-bitowej i mój Python jest również 64-bitowy
>>> import sys
>>> sys.maxsize
9223372036854775807
Czy jest to błąd z python lub czy robię coś nie tak? Czy istnieją dobre alternatywy do kompresowania i serializowania numpy tablic? Ja przyjrzeniu numpy.savez, PyTables i hdf5 teraz, ale dobrze byłoby wiedzieć, dlaczego mam ten problem, ponieważ mam mało pamięci
Aktualizacja: Pamiętam, że czytałem gdzieś, że może to być spowodowane używając starej wersji Numpy (i byłem), ale w pełni zmieniłem na numpy.save/savez zamiast tego, który jest rzeczywiście szybszy niż cPickle (przynajmniej w moim przypadku)
Wygląda na to, że problem został zamknięty. –