Python gzip:溢出错误大小不适合整数

Python gzip:溢出错误大小不适合整数,python,numpy,serialization,gzip,pickle,Python,Numpy,Serialization,Gzip,Pickle,我正在尝试序列化一个大型python对象,该对象由使用pickle/cPickle和gzip的numpy数组元组组成。该过程在数据达到一定大小时运行良好,之后我收到以下错误: --> 121 cPickle.dump(dataset_pickle, f) ***/gzip.pyc in write(self, data) 238 print(type(self.crc)) 239 print(self.crc

我正在尝试序列化一个大型python对象,该对象由使用pickle/cPickle和gzip的numpy数组元组组成。该过程在数据达到一定大小时运行良好,之后我收到以下错误:

--> 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
numpy数组的大小约为1.5 GB,发送到zlib.crc32的字符串超过2 GB。我在一台64位机器上工作,我的Python也是64位的

>>> import sys
>>> sys.maxsize
9223372036854775807
这是python的错误还是我做错了什么?压缩和序列化numpy数组有什么好的替代方法吗?我现在正在看,还有HDF5,但是如果我有足够的内存,我想知道为什么我会有这些问题



更新:我记得在某个地方读到过,这可能是由于使用了旧版本的Numpy(我曾经是),但我已经完全切换到了Numpy.save/savez,它实际上比cPickle快(至少在我的情况下)

这似乎是python 2.7中的一个bug


从检查错误报告来看,似乎没有一个待解决的解决方案。您最好的选择是转到python 3,它显然没有出现此错误。

问题似乎已经解决。