Pickle + gzip - 如何利用多核?

时间:2012-06-18 12:36:11

标签: python gzip pickle

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

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。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

您可以使用subprocess来运行gzip实例或使用管道并通过stdin读取数据。

答案 2 :(得分:0)

您可以尝试使用cPickle,而不是up to 1000 times faster than pickle