我有一系列目录,每个目录大约 38 MB 在磁盘上,我不需要腌制 Python 3.6 Windows 10 系统。当我运行以下代码时,生成的 .pickle 文件非常大,每个约 158 MB:
from six.moves import cPickle as pickle
with open(set_filename, 'wb') as f:
pickle.dump(dataset, f, pickle.HIGHEST_PROTOCOL)
这是正常的吗?pickle 是原始数据文件大小的 4 倍。
然后我尝试bz2
使用pickle
,生成的 .pkl 文件要小得多,约为 18 MB:
from six.moves import cPickle as pickle
import bz2
with bz2.BZ2File(set_filename, 'wb') as f:
pickle.dump(dataset, f, pickle.HIGHEST_PROTOCOL)
解压和解压:
with bz2.BZ2File(pickle_file, mode='r') as f:
letter_set = pickle.load(f)
我对改进感到满意,但如果我能找到它,我会采取更好的压缩方式。
问题:
- 我注意到还有一种
bz2.open()
方法。到目前为止bz2.BZ2File()
似乎工作,但我什么时候想使用open()
呢? bz2.BZ2File()
使用“常规”(解)压缩和“增量”(bz2.BZ2Compressor
()/bz2.BZ2Decompressor
)和“单次”(bz2.compress
/ )(解)压缩有什么区别bz2.decompress
?我已阅读https://docs.python.org/3.6/library/bz2.html上的文档,但它没有解释这些术语或在什么情况下它们可能更可取。