r - 进程变成僵尸,而 r 并行会话仍在工作
问题描述
我正在尝试大量查询我的数据库并激活查询结果集的一些逻辑。
我正在使用Roracle
anddopar
为了这样做(顺便说一句,我的第一次尝试是使用RJDBC
,但我切换到Roracle
是因为我从连接中读取错误;现在,我不再收到此错误,但我遇到了下面描述的问题)。
问题是在并行会话期间大部分进程都在死亡(变成僵尸)。top
我在我的 linux 系统上使用命令监控它;显示并行循环进度的日志文件;并在会话期间监控我的数据库。当我启动程序时,我看到工作人员已加载并且程序高速运行,但随后大多数人都死了,程序变慢(或根本不工作),没有错误消息。
这是我正在尝试做的一些示例代码:
library(doParallel)
library(Roracle)
temp <- function(i) {
# because you can't get access to my DB, it's irrelevant to file the following rows(where I put three dots)- But I checked my DB connection and it works fine.
drv <- ...
host <- ...
port <- ...
sid <- ...
connect.string <- paste(...)
conn_oracle <- dbConnect(drv, username=..., password=..., dbname=connect.string)
myData <- dbGetQuery(conn_oracle, sprintf("SELECT '%s%' FROM dual", i))
print(i)
dbDisconnect(conn_oracle)
}
cl <- makeCluster(10, outfile = "par_log.txt")
registerDoParallel(cl)
output <- foreach(i=1:100000, .inorder=T, .verbose=T, .combine='rbind',
.packages=c('Roracle'),
.export=c('temp'))
%dopar% {temp(i)}
stopCluster(cl)
任何帮助将不胜感激!