我在 Ubuntu 16 LTS 中使用集群(SOCK 类型)将我的 R 代码与雪并行化。下面是一个更简单的代码示例:
# Make cluster of type SOCK
cl <- makeCluster(hostsList, type = "SOCK")
clusterExport(cl, "task");
# Compute long time tasks
result <- clusterApplyLB(cl, 1:50, function(x) task(x))
# Stop cluster
stopCluster(cl)
任务功能可能需要很长时间(几分钟或几小时),但是当我的应用程序中由于某些原因不需要继续计算任务时,应用程序无法停止所有从属进程。我可以杀死主 R 进程,但 R 从进程会一直保留到它们完成(即在一段时间内继续使用 CPU)。
我无法杀死从属进程,因为它们的父进程是系统一(PPID = 1),所以我不知道哪些从属进程与我要停止的主进程相关。我还尝试使用一种中断让主 R 进程执行stopCluster
函数而不成功。
经过深度搜索,我没有找到解决方案。那么,有没有人知道阻止/杀死奴隶的方法或有解决这个问题的想法?
提前致谢!