1

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

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

4

2 回答 2

5

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

于 2013-01-17T22:31:21.050 回答
0

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

于 2013-01-17T22:41:31.827 回答