R - OSX Mountain Lion和CPU Limit

时间:2013-06-20 21:50:33

标签: r osx-mountain-lion

我通过SQL查询收集数据虽然是R.我有一个循环来拉大块的小块,保存块并丢弃块,重复一个小时左右,直到整个表在平面文件中我的RSQL目录。

但是,R会超出Cputime限制:每隔一段时间就会出现24次错误。

我正在运行Mountain Lion。

我试过了

  

很好-19n R CMD BATCH myscript.R

并且操作系统继续以奇数间隔终止进程。我不相信脚本会卡在特定的操作上,只需要一段时间来完成循环。

循环看起来像......

for (i in 1:64){
  foobyte <- NULL
  for (j in 0:7){
    max id = 1000000
    rows = 1e5
    to = max_id * (rows * j) - (i * 7 * rows)
    from = max_id * (rows * (j-1)) - (1 * 7 * rows)
    foobit <- queryDB(paste("SELECT * FROM foobar where id <= ', to,' and id > ',from,';")
    foobyte <- rbind(foobit, foobyte)
    }
  filename <- paste("/my/data/dir/foobyte", j, ".csv", sep="")
  write.table(foobyte, filename)
}

它在撞击之前运行30-90分钟。我将尝试从仅在该终端会话中调用ulimit的shell脚本启动R,并查看其工作原理。

2 个答案:

答案 0 :(得分:0)

尝试过ulimit ...出现我无法访问,即使是通过sudo。我从

获得相同的输出
ulimit -a -H

在给予之前和之后

ulimit -t 12000 # sets cputime limit to 12000 seconds from 600 seconds

通过Debian虚拟机解决。如果有人有Mountain Lionic解决方案,请告诉我们。

答案 1 :(得分:0)

粗略的谷歌搜索“超出Cputime限制:24”,这表明这不是R特定的错误。

基于你发布的循环,我猜它超过了queryDB调用的cpu时间限制,因为你从数据库中检索的块大小。

我不确定你的fromto数学是否检出:在行= 1e5,你正在加载1e11 id,如果你减少它所以行= 1,你正在加载表格中有1e6个ID。

无论哪种方式,尝试减少从数据库加载的块的大小,看看是否有帮助