doMC的文档看起来很稀疏,只列出doMC-包和registerDoMC()。我遇到的问题是,我会通过doMC/foreach培养出几个员工,但是当工作完成后,他们就会坐在那里回忆起来。我可以去寻找他们的进程I,但我经常意外地杀死主进程。
library(doMC)
library(foreach)
registerDoMC(32)
foreach(i=1:32) %dopar% foo()
##kill command here?我尝试过使用registerDoSEQ()进行跟踪,但它似乎并没有扼杀进程。
发布于 2016-04-04 13:40:55
我从未为doMC找到合适的解决方案,因此有一段时间我一直在做以下工作:
library(doParallel)
cl <- makePSOCKcluster(4) # number of cores to use
registerDoParallel(cl)
## computation
stopCluster(cl)每次都管用。
发布于 2014-02-14 04:54:31
doMC包基本上是mclapply函数的包装器,而mclapply分叉工作人员应该在返回之前退出。它不使用像雪花包这样的持久性工作人员或并行包中的雪派生函数,所以它不需要像stopCluster这样的函数来关闭工作人员。
在直接使用mclapply时,您看到了同样的问题吗?当您用较小的核值调用registerDoMC时,它是否工作得更好?
您是在Mac上使用来自IDE的doMC (如RStudio或R.app )吗?如果是这样的话,您可能需要尝试使用终端的R来查看这是否有区别。在IDE中调用分支可能会出现问题。
发布于 2019-11-09 09:35:20
如果使用doParallel包,并使用带有数字的registerDoParallel(8),则可以使用unloadNamespace("doParallel")来终止多进程。
如果您有集群的名称,则可以使用stopCluster(cl)删除额外的工作人员。
https://stackoverflow.com/questions/21758806
复制相似问题