15

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

4

3 回答 3

30

我用它来在一个地方节省内存:

import cPickle
import zlib

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

# Get it back:
obj = cPickle.loads(zlib.decompress(compressed))

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

于 2013-10-21T17:08:47.743 回答
10

包括电池。

>>> zlib.compress(pickle.dumps([42]))
'x\x9c\xd3\xc8)0\xe0\xf241\xe2J\xd4\x03\x00\x10A\x02\x87'
于 2013-10-21T17:11:23.303 回答
6
bz2.compress(pickle.dumps(some_object))
于 2013-10-21T17:09:48.527 回答