Процессы R не останавливаются после завершения работы R

#r

#r

Вопрос:

Я использую parallel. Если мой код прерывается (например, из-за ошибки или просто из-за выключения консоли R) до запуска кода stopCluster (cl), то процессы R продолжают выполняться! Я использую новый Macbook Pro. В моем мониторе активности я вижу 8 запущенных процессов R, даже после того, как я закрыл консоль R. Единственный способ, которым я могу их остановить, — это перезагрузить мой компьютер. Я также могу принудительно завершить каждый из них по отдельности из монитора активности. Есть ли лучшее решение?

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

Комментарии:

1. В Linux, когда это происходит, я kill pid использую экземпляры R из терминала.

Ответ №1:

Вы можете использовать mcKill низкоуровневую функцию в parallel пакете :

отправляет сигнал дочернему процессу: это эквивалентно pskill в package tools.

Пример:

 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