r - 完成后如何杀死doMC工作人员?

标签 r foreach parallel-processing domc

doMC 的文档似乎很少,只列出了 doMC-package 和 registerDoMC()。我遇到的问题是我将通过 doMC/foreach 产生几个 worker ,但是当工作完成后,他们只是坐在那里占用内存。我可以去寻找他们的进程 ID,但我经常不小心杀死主进程。

library(doMC)
library(foreach)

registerDoMC(32)

foreach(i=1:32) %dopar% foo()

##kill command here?

我试过使用 registerDoSEQ() 进行跟踪,但它似乎并没有终止进程。

最佳答案

doMC 包基本上是 mclapply 函数的包装器,并且 mclapply fork 应该在返回之前退出的工作程序。它不使用像snow 包或并行包中的snow 派生函数这样的持久性worker,因此它不需要像stopCluster 这样的函数来关闭worker。

直接使用 mclapply 有没有看到同样的问题?当您使用较小的内核值调用 registerDoMC 时,它是否会更好地工作?

您是否在 Mac 上使用来自 IDE(例如 RStudio 或 R.app)的 doMC?如果是这样,您可能想尝试从终端使用 R 来查看是否有所不同。在 IDE 中调用 fork 可能会出现问题。

关于r - 完成后如何杀死doMC工作人员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21758806/

相关文章:

php - 删除关联数组中的父元素

linux - Makefile 中的 foreach 不显示文件列表

javascript - 将对象数组缩减为在所有对象共享的属性中找到的唯一字符串 (javascript)

c++ - 我的 opencl 测试运行速度并不比 CPU 快多少

python - 如何在 Python 中进行并行编程?

r - 在 R 中创建一个新列

r - 从具有重复元素的向量生成所有唯一组合

linux - 有没有办法可以将我的 USB 闪存驱动器或其他存储设备用作运行 R 或其他编程任务的 RAM?

r - 如何从表矩阵计算精度

c++ - 将非 NULL argv 传递给 MPI_Comm_spawn