2013-03-18 73 views
0

当我使用ROracleR执行查询时,有时查询似乎挂起,我无法停止做CTRL+C或打ESC。 有什么我可以做(Win7上R.2.15.2)停止查询并返回到R>如何取消查询

回答

1

一招我已经使用在过去不间断R代码里面是向parallel::mcparallel通话中调用它。如果它挂起,我可以杀死分叉进程并继续进入主R进程。例如:

function.that.hangs <- function(...) system("while true; do echo hello; sleep 1; done") 

# This might hang 
result <- function.that.hangs(...) 

# Do this instead, the run the function in a forked process. 
p <- mcparallel(function.that.might.hang(...)) 
# This might still hang, but you can kill the stuck R process and it will return. 
result <- mmcollect(p)[[1]] 

(这个例子可能不使用CTRL + C停止你,但你的想法

+0

=>它看起来不错,但我在Windows上这不是一个POSIX系统。所以我不能fork一个进程...(我可以吗?)。当我实例化Oracle客户端'oracle(interruptible = TRUE)'时,还有一个选项,但奇怪的是'CTRL-C'仍然不起作用 – statquant 2013-03-18 18:36:46

+0

对不起,我相信并行软件包只是UNIX(POSIX?) – 2013-03-18 18:37:19

+0

这就是我的理解(在Windows平行工作,但不支持并行化);)太糟糕了,在我们使用它的时候,你有没有对ROracle进行基准测试,以反映在SAS中运行相同的查询例如,它对我来说看起来很慢(但它很重要t是网络问题) – statquant 2013-03-18 18:40:39