r - 指定 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% 进行并行化。
推荐阅读
- apache-nifi - 内部 https 负载均衡器 GCP 后面的 Nifi 实例
- python - Plotly:如何处理箱线图中类别之间的不均匀差距?
- xml - Windows 更新后的网站面板错误:XML 文档中不允许输入类型
- html - 如何使用 flex 方向将多个 div 定位在 div 内的不同位置?
- r - 如何解析要用作标签的表达式(ggplot2)
- python - 在python中转换为二进制补码
- forms - 我的文本表单小部件没有滚动,再次出现同样的问题。我尝试添加 SingleChildScrollView 但它不起作用
- java - Java else if 和 else 在 while 循环下使用 Scanner 时不起作用
- ionic-framework - 三个 js textureloader 显示 CORS 错误以从 Ionic App 的 iframe 中从 S3 Bucket 加载数据
- java - 我需要将正确的字符串放在“new FileReader(“stringpath”)”中的括号中