最近经常要用R跑程序,每次都要跑好久- -。不加并行,CPU利用率实在低。在此记录下相关的语句。
先导入相关包
library(foreach)
library(doParallel)
library(parallel)
no_cores <- detectCores(no_cores) - 1 # 检测核数,并设置使用的数量
cl = makeCluster(no_cores);
registerDoParallel(cl);
# 由于程序中需要用igraph包,这里需给每个线程导入igraph包
clusterEvalQ(cl, library(igraph))
# 循环主体
res <- foreach( i = 1:N, .combine = 'c')%dopar% # .combine 设置了数据的输出格式,'c'代表按向量输出
{
..... # 计算的核心代码
result <- xxxx # xxxx是要输出的变量,R里会返回最后一句的变量,
# 因此要写上这句,保证输出的是想要的值
}
# 结束后,记得释放线程
stopCluster(cl)