我正在尝试使用该parallel
包,发现makeCluster
无法完成。我已将问题追溯到以下行newPSOCKnode
:
con <- socketConnection("localhost", port = port, server = TRUE,
blocking = TRUE, open = "a+b", timeout = timeout)
该命令停止(假设默认超时值很大)。我怀疑这是由于我们的工作计算机上制定了一些“过分热心的 IT 规则”,但欢迎任何有关如何追踪(和修复)问题根源的建议。这是 Windows7-64,“企业”,R 3.0.1。
更多信息:在调试会话中,我设置timeout < - 10
了 ,但它仍然挂起 - 好像socketConnection
被困在某个甚至无法检查超时值的地方。
这是我与 Richie Cotton 的数据同时进行的转储:
Browse[3]> ls.str()
arg : chr "parallel:::.slaveRSOCK()"
cmd : chr "\"C:/Users/carl.witthoft/Documents/R/R-3.0.1/bin/x64/Rscript\" -e \"parallel:::.slaveRSOCK()\" MASTER=localhost PORT=11017 OUT="| __truncated__
env : chr "MASTER=localhost PORT=11017 OUT=/dev/null TIMEOUT=2592000 METHODS=TRUE XDR=TRUE"
machine : chr "localhost"
manual : logi FALSE
master : chr "localhost"
methods : logi TRUE
options : <environment: 0x000000000ccac6a0>
outfile : chr "/dev/null"
port : int 11017
rank : int 1
renice : int NA
rscript : chr "\"C:/Users/carl.witthoft/Documents/R/R-3.0.1/bin/x64/Rscript\""
timeout : num 2592000
useXDR : logi TRUE
所以除了不同的端口号,我认为一切都匹配。
下一个技巧:我打开一个 shell 并运行netsh advfirewall firewall add rule name="Open Port 11017" dir=in action=allow protocol=TCP localport=11017
并得到“OK”响应。我跑了netstat -a -n
,发现以下行:
TCP 0.0.0.0:11017 0.0.0.0:0 LISTENING
但是跑步makePSOCKcluster
仍然挂在同一个地方。
NEXT:我尝试R
从命令行运行(通过 cygwin bash),我得到的错误消息是Error in loadhistory(file) : no history mechanism available
Execution halted
,然后 -C 将我返回到 R-prompt。