在遇到R里的大量重复操作时,可以考虑使用
doParallel
包提供的多线程处理技巧,大大提高分析速度。具体使用方法针对window与linux/mac平台有所区别。相关笔记如下
#查看系统平台
Sys.info()['sysname']
一、Linux/Mac平台
library(parallel)
# 检测系统的CPU数
detectCores()
1、lapply 多线程
-
mclapply()
函数,关键是mc.cores
参数设置
cores=4
res = mclapply(1:10, function(x){
<code>
<code>
}, mc.cores = cores)
2、for循环 多线程
- 配合
foreach
包。可通过调整参数,设置结果返回的形式,详见相关笔记,或者该包的帮助文档。
library(foreach)
library(doParallel)
cl=makeCluster(4)
registerDoParallel(cl)
#专门加载所需要的分析包
clusterEvalQ(cl, library(package1))
clusterEvalQ(cl, library(package1))
res = foreach(i = 1:10) %dopar% {
<code>
<code>
}
stopCluster(cl)
二、window平台
- 个人觉得window平台的笔记本电脑可能还是不太适合多线程的使用
library(parallel)
# 检测系统的CPU数
detectCores()
1、lapply 多线程
-
parLapply()
函数
cl <- makeCluster(4)
#专门加载所需要的分析包
clusterExport(cl, library(packages))
res=parLapply(cl, 1:10, function(x){
<code>
<code>
})
stopCluster(cl) #需要显式的释放已加载的线程,比较麻烦
网友评论