我在这里使用Python非常重要,而且它是Python 2.7。
我们正在序列化超过4千兆字节的NumPy数组(意思是,字节数超过4 Gb,数据本身可能是1千兆浮点数或其他东西),而Python 2.7不支持像4这样的对象的腌制GB。使用字符串显示更容易(作为酸洗NumPy数组的一部分,pickle实际上使用字符串):
>>> huge_string = "*" * (2**33) # 8 Gig
>>> import cPickle
>>> a = cPickle.dumps(huge_string, 2)
'\x80\x02U\x00q\x01.'
>>> print len(a)
6
字符串绝对不超过8 Gig。
我知道Python 3.4及以上版本会支持这一点。 https://bugs.python.org/issue11564
我的两个问题:
答案 0 :(得分:0)
感谢大家的回复。
似乎有三种选择(我仍然希望听到Python社区是否会将Python 3.x解决方案向后移植到Python 2.7):
我们最终使用了PicklingTools OC。感谢大家的回复!