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