【问题标题】:Compress large python objects压缩大型python对象
【发布时间】:2013-01-17 22:26:17
【问题描述】:

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

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

【问题讨论】:

    标签: python memory numpy compression


    【解决方案1】:

    增量(去)压缩应该使用zlib.{de,}compressobj() 来完成,这样可以最大限度地减少内存消耗。此外,使用bz2 代替大多数数据可以获得更高的压缩率。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-15
        • 2017-04-16
        • 2019-07-03
        • 2010-12-23
        • 1970-01-01
        • 1970-01-01
        • 2019-04-24
        • 1970-01-01
        相关资源
        最近更新 更多