压缩大型python对象

压缩大型python对象,python,memory,numpy,compression,Python,Memory,Numpy,Compression,我试图压缩一个巨大的python对象~15G,并将其保存在磁盘上。由于需求限制,我需要尽可能地压缩这个文件。我目前正在使用zlib.compress9。我主要关心的是,在压缩过程中,占用的内存超过了系统32g上的可用内存,并且预期对象的大小将继续增加。是否有更有效/更好的方法来实现这一点。 谢谢 更新:还要注意的是,我要保存的对象是一个稀疏的numpy矩阵,在压缩之前我正在序列化数据,这也增加了内存消耗。由于序列化python对象后我不需要它,gc.collect帮助吗?应该使用zlib.{de

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


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

应该使用zlib.{de,}compressobj进行增量解压缩,以便将内存消耗降至最低。此外,对于大多数数据,使用bz2可以获得更高的压缩比。

增量解压缩应该使用zlib.{de,}compressobj来完成,这样可以最小化内存消耗。此外,使用bz2可以为大多数数据获得更高的压缩比。

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

deflateInit2的memLevel参数指定应为内部压缩状态分配多少内存。默认值为8,最大值为9,最小值为1。请参见。如果您已经尝试过了,或者它对您的帮助还不够,那么可能需要查看其他压缩算法或库