5

我有一个R代码可以进行一些数据分析并返回TRUE/FALSE。有时,输入数据太大,代码只是继续运行。

我想要一个脚本来监视我的数据分析代码,如果它没有返回任何东西,比如说600 seconds,它会停止正在运行的代码并做其他事情。

就像按下STOP按钮一样R console

我知道stop, break,exit等。但是这些都没有用,因为代码无法访问这些语句,因为它仍在运行其数据分析循环。

4

3 回答 3

8

您可以使用setTimeLimit()并让您的主脚本调用辅助脚本,该辅助脚本将在开始时具有此功能。

setTimeLimit(elapsed = 10)
for(i in c(1:100)){
    cat(i,"\n")
    Sys.sleep(1)
}

这是您期望它如何工作的一个示例。10 秒后,我的工作将达到时间限制,尽管循环想要计数到 100,每秒增加一个增量。

于 2016-03-18T13:17:33.143 回答
0

这并不是使用脚本来监控另一个进程的真正解决方案,但在 Linux 上,您可以ulimit -t 300在开始分析之前使用,例如,使用Rscript code.R.

然后内核会在 cpu 时间超过 300 秒时杀死你的工作。请注意,这适用于在 ulimit 命令之后从同一控制台执行的所有命令。

于 2016-03-18T13:09:51.057 回答
0

另一个没有真正回答。有时我必须循环遍历我的数据集的每一行,或者我必须将我猜的 10 000 个数据集合并为一个。

当我在循环内做时我隐藏

k <- k  + 1 
print(k)

所以我可以追踪我的代码,看看我已经做了多少。Ofcoruse,您可以使用 proc.time(

于 2016-03-18T13:18:11.977 回答