0

我有一个包含两个 data.table 对象的列表。给出一个想法,一个表有 400,000 行和 7 个变量,另一个有 750,000 行和 12 个变量。这两个表没有相同的列。我对它们做了很多修改(每个步骤都有不同的步骤)。修改步骤包括计算总和、查找汇总值的百分位数、每组中的案例数、唯一长度等(每个步骤超过 20 步)。我用data.table这些步骤的包。但是,我发现每个步骤都执行大约 20 个步骤(总共 > 40 个步骤)需要一些时间。我想知道如何使用并行处理来加快速度。我认为可以并行处理这些步骤,因为它们是在列表的不同组件上执行的。我进行了彻底的谷歌搜索以集思广益,但是,我没有找到有用的线索。有人做过吗?请提供一些启示,所以我将非常感激。谢谢

到目前为止,我已经做了这么多。Result是包含两个 data.table 对象的列表。fun1 和 fun2 包含了我需要对每个 data.table 对象执行的一组步骤。性能方面我还没有看到任何收益(可能是由于开销?我不知道)。

munge_data<-function(fun1=prep_data1, fun2=prep_data2, result=result){
  library(foreach)
  library(doParallel)
  cl <- makeCluster(2)
  registerDoParallel(cl)

  fun_munge<-list(quote(prep_data1(result)), quote(prep_data2(result)))

  finatest<-foreach (i=1:2, .packages = "data.table") %dopar% {
    result<-result
    prep_data1<-fun1
    prep_data2<-fun2
    eval(fun_munge[[i]])
  }
  stopCluster(cl)
  finatest
}
4

0 回答 0