2

我有一系列目录,每个目录大约 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)

我对改进感到满意,但如果我能找到它,我会采取更好的压缩方式。

问题

  1. 我注意到还有一种bz2.open()方法。到目前为止bz2.BZ2File()似乎工作,但我什么时候想使用open()呢?
  2. bz2.BZ2File()使用“常规”(解)压缩和“增量”(bz2.BZ2Compressor()/ bz2.BZ2Decompressor)和“单次”(bz2.compress/ )(解)压缩有什么区别 bz2.decompress?我已阅读https://docs.python.org/3.6/library/bz2.html上的文档,但它没有解释这些术语或在什么情况下它们可能更可取。
4

0 回答 0