Después de haber jugado durante algún tiempo utilizando el paquete paralelo de R en mi máquina basada en Debian, todavía no puedo encontrar una manera de eliminar todos los procesos secundarios zombies después de un cálculo.Eliminar procesos zombie usando el paquete paralelo
Estoy buscando una solución general y una solución independiente del sistema operativo.
Por debajo de un script sencillo que ilustra el problema de 2 núcleos:
library(parallel)
testfun <- function(){TRUE}
cltype <- ifelse(.Platform$OS.type != "windows", "FORK", "PSOCK")
cl <- makeCluster(2, type = cltype)
p <- clusterCall(cl, testfun)
stopCluster(cl)
Por desgracia, este script deja dos procesos de zombies en la tabla de procesos que sólo los matan si R está apagado.
Hola Josh, disculpa mi respuesta tardía: tienes razón, esto solo parece ser un problema para Fork Clusters. Los clústeres de PSOCK también funcionan en mi Debian Machine, simplemente pensé que Forking sería más rápido. ¡Muchas gracias! – user625626
Esto parece ser una tonta supervisión con grupos FORK. Publiqué un informe de errores en https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15471. Los procesos de Zombie son en su mayoría inofensivos porque no consumen recursos. Simplemente están sentados en la mesa de proceso para que el proceso principal pueda examinar su estado de salida. Al examinar su estado de salida con 'library (fork) wait()' limpiará los zombies de a uno por vez (e imprimirá el estado de salida de cada uno). – computermacgyver
El paquete de horquillas ya no está disponible. – russellpierce