R語言中,可以用
foreach搭配
doMC這兩個套件來完成迴圈的平行化,程式碼如下:
rm(list = ls())
install.packages("foreach")
install.packages("doMC")
library(foreach)
library(doMC)
registerDoMC(4) # Number of CPU cores used in parallel computing
### for loop, using single CPU core ###
df <- data.frame()
for(i in 1:10) {
Sys.sleep(1)
df <- rbind(df, data.frame("value"=i, "quadratic"=i*i, "cubic"=i*i*i))
}
### foreach loop, using single CPU core ###
dfs <- foreach(i=1:10, .combine=rbind) %do% {
Sys.sleep(1)
data.frame("value"=i, "quadratic"=i*i, "cubic"=i*i*i)
}
identical(df, dfs)
### foreach loop, using multiple CPU cores ###
dfp <- foreach(i=1:10, .combine=rbind) %dopar% {
Sys.sleep(1)
data.frame("value"=i, "quadratic"=i*i, "cubic"=i*i*i)
}
identical(df, dfp)
沒有留言:
張貼留言