我在开始工作之前使用简单的函数来恢复状态:
import pickle, gzip
def load(filename):
"""Loads a compressed object from disk
"""
file = gzip.GzipFile(filename, 'rb')
return pickle.load(file)
records_df = load("records_all_in_one.gzp")
问题是恢复状态是我的应用程序的瓶颈。有没有简单的方法来告诉gzip / pickle组合使用多处理?
当然,我总是可以拆分数据结构并从多个核心的多个文件中读取它,但我宁愿看看是否有更聪明的方法来实现它。
最后一点信息 - 正在恢复的数据是一个大型的pandas DataFrame。
答案 0 :(得分:3)
您可以运行pigz子进程,它是gzip的并行实现。
答案 1 :(得分:2)
另一种方法是运行并行gzip实现并使用python处理未压缩的数据。
您可以使用subprocess来运行gzip实例或使用管道并通过stdin读取数据。
答案 2 :(得分:0)
您可以尝试使用cPickle
,而不是up to 1000 times faster than pickle