Я испытываю трудную задачу отладки с makePSOCKcluster
из пакета parallel
на R x64 в Windows. Это не происходит на R i386 в Windows, ни на любом OSX или Linux. К сожалению, это не происходит последовательно, только изредка и довольно случайным образом.
Что происходит, так это то, что функция makePSOCKcluster
отключает и замораживает сеанс R, но только если раньше в сеансе выполнялись вызовы (произвольные) system()
. Видео и script ниже иллюстрируют проблему более четко.
Некоторые вещи, которые я пробовал без успеха:
- Отключить антивирус/брандмауэры.
- Ожидание пары секунд между вызовами
system
иmakePSOCKcluser
. - Использование различных системных вызовов.
Как бы я еще сузил это? Здесь видео и script, используемые в видео:
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);