大多数关于Python压缩文件的教程都立即将该文件写入磁盘,而没有使用中间压缩的Python对象。我想知道如何在内存中pickle然后压缩一个Python对象,而不必从磁盘读取或写入数据。
大多数关于Python压缩文件的教程都立即将该文件写入磁盘,而没有使用中间压缩的Python对象。我想知道如何在内存中pickle然后压缩一个Python对象,而不必从磁盘读取或写入数据。
我使用这个方法在一个地方节省内存:
import cPickle
import zlib
# Compress:
compressed = zlib.compress(cPickle.dumps(obj))
# Get it back:
obj = cPickle.loads(zlib.decompress(compressed))
如果 obj
引用了许多小对象,这可以大幅减少内存使用量。在 Python 中,许多小对象会因为每个对象的内存开销以及内存碎片化而增加内存使用量。
电池已包含在内。
>>> zlib.compress(pickle.dumps([42]))
'x\x9c\xd3\xc8)0\xe0\xf241\xe2J\xd4\x03\x00\x10A\x02\x87'
bz2.compress(pickle.dumps(some_object))