2013-03-18 29 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