压缩大型python对象

时间:2013-01-17 22:26:17

标签: python memory numpy compression

我正在尝试压缩一个巨大的python对象~15G,并将其保存在磁盘上。由于需求限制,我需要尽可能地压缩这个文件。我目前正在使用zlib.compress(9)。我主要担心的是,在压缩过程中所占用的内存超过了我在系统32g上可用的内存,并且预计对象的大小会增加。是否有更有效/更好的方法来实现这一目标。 感谢。

更新:还要注意我要保存的对象是一个稀疏的numpy矩阵,并且我在压缩之前序列化数据,这也增加了内存消耗。由于我在序列化后不需要python对象,gc.collect()会帮忙吗?

2 个答案:

答案 0 :(得分:5)

应使用zlib.{de,}compressobj()进行增量(de)压缩,以便最大限度地减少内存消耗。此外,通过使用bz2代替,可以为大多数数据获得更高的压缩率。

答案 1 :(得分:0)

deflateInit2 ()的memLevel参数指定应为内部压缩状态分配多少内存。默认值为8,最大值为9,最小值为1(请参阅zlib manual)。如果您已经尝试过,或者它对您没有帮助,可能需要查看另一个压缩算法或库。