在运行R中的并行功能:stopCluster()
之后,我读到您必须使用foreach()
。但是,我可以摆脱registerDoParallel()
然后运行foreach()
不需要使用stopCluster()
就可以了。那我是否需要stopCluster()
?
不使用stopCluster()
意味着您的核心已被当前任务占用吗?因此,如果我使用并行编程,并且它们之间只有一小部分单核顺序任务,那么我不需要stopCluster()
吗?我了解通过并行设置还需要大量的开销时间。
答案 0 :(得分:1)
parallel::makeCluster()
和doParallel::registerDoParallel()
创建一组并行运行的R副本。这些副本称为 workers 。
parallel::stopCluster()
和doParallel::registerDoParallel()
是关闭工作人员的安全方法。从帮助页面?stopCluster
:
优良作法是通过调用“ stopCluster”来关闭工作程序:但是,一旦工作程序正在侦听命令的套接字不可用,工作程序将自行终止,如果主R会话完成(或加工模具)。
实际上,未使用的工作程序的CPU使用率通常可以忽略不计。但是,如果工作人员加载大型R对象(例如大型数据集),则他们可能会占用内存的很大一部分,结果会减慢计算速度。在这种情况下,关闭闲置的工作人员效率更高。