2014-06-20 64 views
2

我正在使用並行。如果我的代碼在stopCluster(cl)代碼運行之前被中斷(例如,有錯誤,或者只是關閉了R控制檯),那麼R進程將繼續運行!我正在使用新的Macbook Pro。在我的活動監視器中,即使在關閉R控制檯之後,仍可以看到8個R進程正在運行。我似乎阻止他們的唯一方法是重新啓動我的電腦。我也可以強制退出活動監視器中的每個人。有沒有更好的解決方案?R關閉後R進程不停止

cl <- makeCluster(getOption('cl.cores', detectCores())) 
clusterEvalQ(cl, library(data.table)) 
clusterEvalQ(cl, require(zoo)) 
... 
stopCluster(cl) 
+0

在Linux當發生這種情況我'殺pid'從終端流氓ř實例。 – JeremyS

回答

2

可以使用mcKill低水平功能parallel包:

將信號發送給一個子進程:等同於包工具pskill。

實施例:

p <- mcparallel(scan(n = 1, quiet = TRUE)) 
parallel:::mckill(p) 
[1] TRUE 
parallel:::mckill(p) ## check that the process is really killed 
Error in FUN(3202L[[1L]], ...) : 'mckill' failed