我使用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
函数而不成功。
深度搜索后,我没有找到解决方案。那么,有没有人知道停止/杀死奴隶的方法或有想法解决这个问题?
提前致谢!