如何并行化两个或多个功能

时间:2019-05-09 03:51:59

标签: r

如果我有两个或多个具有不同参数的函数,如何使它们并行? 请给我一个不太复杂的例子。

我只知道如何并行处理单个函数。

 test <- function(x) {
     for (i in 1:10000000) {
         x <- x + i
     }
     return(x)
 }
 library(snow)
 cl <- makeCluster(type = "SOCK", c("localhost", "localhost"))  # 建立两个本地CPU内核的并行
 system.time({test(5);test(5)})
用户 系统 流逝 
0.58 0.00 0.58 
 system.time(clusterCall(cl, test,5)) # 测试并行循环的耗时
用户 系统 流逝 
0.00 0.00 0.37 

1 个答案:

答案 0 :(得分:0)

如何使用库foreach

首先安装foreachdoParallel

install.packages('foreach')
install.packages('doParallel')

我为您的代码做了修改。

test1 <- function(x) {
 for (i in 1:10000000) {
 x <- x + i
 }
 return(x)
}
library(snow)
cl <- makeCluster(type = "SOCK", c("localhost", "localhost")) 
doParallel::registerDoParallel(cl)

如果您具有类似test1, test2, test3, ...

的功能

registerDoParallel之后,您可以使用下面想要的任何其他功能。

foreach::foreach(i=1:2) %dopar% {
test1(x)
test2(x)
test3(x)
...
}