2

我正在使用简单的函数在开始工作之前恢复状态:

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 组合使用多处理?

当然,我总是可以拆分数据结构并从多个内核上的多个文件中读取它,但我更愿意看看是否有更聪明的方法来做到这一点。

最后一点信息 - 正在恢复的数据是一个大熊猫 DataFrame。

4

3 回答 3

3

您可以运行pigz子进程,它是 gzip 的并行实现。

于 2012-06-18T15:49:37.350 回答
2

另一种方法是运行并行 gzip 实现并使用 python 来处理未压缩的数据。

您可以使用 subprocess 运行 gzip 实例或使用管道并通过标准输入读取数据。

于 2012-06-18T13:00:04.157 回答
0

您可以尝试使用cPickle它,因为它比它快 1000 倍pickle

于 2012-06-18T13:34:43.750 回答