r - 每次我想在 R 中使用 foreach() 时,是否必须注册 DoParallel() 和 stopCluster()?
问题描述
我读到你必须stopCluster()
在运行并行函数后使用:foreach()
在 R 中。但是,我可以侥幸逃脱,registerDoParallel()
然后在foreach()
不使用stopCluster()
. 那我需要stopCluster()
还是不需要?
使用不stopCluster()
意味着你的核心被你当前的任务占用了吗?因此,如果我使用并行编程,其间只有一点点单核顺序任务,那么我不需要stopCluster()
吗?我知道设置并行也有大量的开销时间消耗。
解决方案
parallel::makeCluster()
并doParallel::registerDoParallel()
创建一组并行运行的 R 副本。这些副本称为workers。
parallel::stopCluster()
并且doParallel::stopImplicitCluster()
是关闭工人的安全方法。从帮助页面?stopCluster
:
通过调用“stopCluster”来关闭工作人员是一种很好的做法:但是一旦他们正在侦听命令的套接字变得不可用,工作人员将自行终止,如果主 R 会话完成(或它的进程终止),它应该这样做.
实际上,未使用的工作人员的 CPU 使用率通常可以忽略不计。但是,如果工作人员加载大型 R 对象,例如大型数据集,他们可能会使用大部分内存,因此会减慢计算速度。在这种情况下,关闭未使用的工作人员会更有效。
推荐阅读
- python - Altair:Mark_rule 具有分层刻面的图例,另一个图例复制了图例
- android - 无法检查我的数组内部的文本视图在 Kotlin 中是否可见
- android - RecyclerView list 限制在一个片段,没有限制另一个片段
- flutter - 在 null 上调用了“add”方法:Flutter、SQFlite
- python - 在具有可变列表大小的 datframes 中的列中使用爆炸列表的有效方法
- c++ - 为什么不使用继承来编写C++标准库而不同的容器使用自己的成员函数?
- reactjs - React Hover 显示信息,但在悬停前隐藏
- salesforce - salesforce 更改数据捕获未发送更改事件
- android - 无需 AWS 凭证即可从 Android 登录 AWS Cognito
- r - 在ggplot中在距y轴固定距离处标记geom_bar图