使用延迟(DASK)读取大型CSV文件

时间:2019-03-03 14:51:21

标签: python pandas csv dask dask-delayed

我正在使用delayed读取许多大型CSV文件:

import pandas as pd

def function_1(x1, x2):         
    df_d1 = pd.read_csv(x1)
    # Some calculations on df_d1 using x2.
    return df_d1

def function_2(x3):         
    df_d2 = pd.read_csv(x3)
    return df_d2

def function_3(df_d1, df_d2):         
    # some calculations and merging data-sets (output is "merged_ds").
    return merged_ds
  • function_1:导入数据集1并进行一些计算。
  • function_2:导入数据集2。
  • function_3:合并数据集和一些计算。

接下来,我使用循环使用delayed函数来调用这些函数。我有许多CSV文件,每个文件都超过500MB。这是使用DASK(delayed)执行任务的合适程序吗?

1 个答案:

答案 0 :(得分:1)

是的,请继续执行并延迟您的功能,然后将其提交给Dask。最消耗内存的可能是function_3,并且您可能要考虑一次可以在内存中保留多少个内存-使用分布式调度程序来控制您拥有多少个工作线程和线程以及它们各自内存限制https://distributed.readthedocs.io/en/latest/local-cluster.html

最后,我确定您不希望返回最终合并的数据帧,因为它们肯定不适合存储在内存中:您可能打算对它们进行聚合或写出其他文件。 / p>