在基於Debian的機器上使用R的並行程序包玩了一段時間後,我仍然無法找到一種方法在計算後刪除所有殭屍子進程。使用並行程序包刪除殭屍進程
我正在尋找一個通用和獨立於操作系統的解決方案。
下面說明2個核問題的一個簡單的腳本:
library(parallel)
testfun <- function(){TRUE}
cltype <- ifelse(.Platform$OS.type != "windows", "FORK", "PSOCK")
cl <- makeCluster(2, type = cltype)
p <- clusterCall(cl, testfun)
stopCluster(cl)
不幸的是,這個腳本葉若R被關閉,只有被殺的進程表中的兩個殭屍進程。
嗨喬希,對不起,我遲到的回覆 - 你是對的,這似乎只是叉集羣的問題。 PSOCK羣集也在我的Debian機器上工作 - 只是認爲Forking會更快。非常感謝! – user625626 2012-03-05 19:02:52
這似乎是FORK羣集的一個愚蠢的疏忽。我在https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15471上發佈了一個錯誤報告。殭屍進程大多是無害的,因爲它們不消耗資源。他們只是坐在流程表中,以便父進程可以檢查其退出狀態。用'library(fork)wait()'檢查它們的退出狀態將一次清理一個殭屍(並打印每個殭屍的退出狀態)。 – computermacgyver 2013-09-24 07:33:57
叉包不再可用。 – russellpierce 2015-05-27 12:09:28