我在 Windows 上的 R x64 上makePSOCKcluster
的包中遇到了难以调试的问题。parallel
它不会发生在 Windows 上的 R i386 上,也不会发生在任何 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);