压缩内存中的Python对象

Mic*_*ael 11 python compression

大多数关于在Python中压缩文件的教程都涉及立即将该文件写入磁盘而没有插入压缩的python对象.我想知道如何在内存中腌制然后压缩python对象,而无需写入或读取磁盘.

Max*_*Max 22

我用这个来节省一个地方的内存:

import cPickle
import zlib

# Compress:
compressed = zlib.compress(cPickle.dumps(obj))

# Get it back:
obj = cPickle.loads(zlib.decompress(compressed))
Run Code Online (Sandbox Code Playgroud)

如果obj引用了许多小对象,这可以减少批量使用的内存量.由于每个对象的内存开销以及内存碎片,Python中的许多小对象都会加起来.

  • 在 python 3 中,我们需要 pickle,因为没有 cPickle。 (4认同)

Ste*_*sop 6

bz2.compress(pickle.dumps(some_object))
Run Code Online (Sandbox Code Playgroud)


jhe*_*ann 6

包括电池。

>>> zlib.compress(pickle.dumps([42]))
'x\x9c\xd3\xc8)0\xe0\xf241\xe2J\xd4\x03\x00\x10A\x02\x87'
Run Code Online (Sandbox Code Playgroud)