![](/img/trans.png)
[英]Whether to use the detectCores function in R to specify the number of cores for parallel processing?
[英]Specify number of cores for R doParallel
我正在尝试在R中指定一个并行进程,以便在我的计算机上使用4个可能的核心中的3个为其他进程留下一点CPU能力,同时在后台运行。 我的代码看起来像这样:
library(doParallel)
cl <- makePSOCKcluster(3)
registerDoParallel(cl)
results <- foreach(i = 1:10) %dopar% {
...some processes to be parallelized...
}
stopCluster(cl)
当我运行它并查看任务管理器时,所有核心都以100%运行。 有没有办法只使用3个核心,或者这是不可能的?
谢谢!
我确信这已在其他地方得到解答,但......
cl <- makePSOCKcluster(detectCores() * .875)
要么
cl <- makePSOCKcluster(detectCores() - 1)
会为此工作。
查看detectCores()
上的帮助页面,最后一个警告是我曾经把detectCores放在一个循环中,认为它很快......它不是,所以如果你需要它多次,请分配一个变量。
最后,我非常支持使用furrr(future_map等)而不是foreach()%dopar%进行并行化。
在运行并行进程之前使用mcaffinity
,可以限制核心数。
parallel::mcaffinity(1:3)
此mcaffinity
允许您的R工作仅分配前3个核心。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.