У меня возникла проблема с отладкой makePSOCKcluster
из пакета parallel
на R x64 в Windows. Этого не происходит ни на R i386 в Windows, ни на OSX или Linux. К сожалению, это тоже происходит не постоянно, а только изредка и совершенно случайно.
Что происходит, так это то, что функция makePSOCKcluster
истекает и замораживает сеанс R, но только если ранее в сеансе были выполнены некоторые (произвольные) вызовы system()
. Видео и сценарий ниже иллюстрируют проблему более наглядно.
Некоторые вещи, которые я пробовал без успеха:
- Отключите антивирус/брандмауэр.
- Ожидание в течение нескольких секунд между вызовами
system
иmakePSOCKcluser
. - Использование различных системных вызовов.
Как бы я еще сузил это? Вот видео и сценарий, использованный в видео:
cmd_exists <- function(command){
iswin <- identical(.Platform$OS.type, "windows");
if(iswin){
test <- suppressWarnings(try(system(command, intern=TRUE, ignore.stdout=TRUE, ignore.stderr=TRUE, show.output.on.console=FALSE), silent=TRUE));
} else {
test <- suppressWarnings(try(system(command, intern=TRUE, ignore.stdout=TRUE, ignore.stderr=TRUE), silent=TRUE));
}
!is(test, "try-error")
}
options(hasgit = cmd_exists("git --version"));
options(haspandoc = cmd_exists("pandoc --version"));
options(hastex = cmd_exists("texi2dvi --version"));
cluster <- parallel::makePSOCKcluster(1);