并行

时间:2015-07-02 20:42:58

标签: r parallel-processing data.table parallel-foreach data-munging

我有一个包含两个data.table对象的列表。为了给出一个想法,一张桌子得到了40万行& 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
}

0 个答案:

没有答案