【问题标题】:Code to stop execution of another code停止执行另一个代码的代码
【发布时间】:2016-03-18 12:40:40
【问题描述】:

我有一个R 代码,它进行一些数据分析并返回TRUE/FALSE。 有时,输入的数据太大,代码一直在运行。

我想要一个脚本来监控我的数据分析代码,如果它没有返回任何内容,比如600 seconds,那么它会停止正在运行的代码并执行其他操作。

这就像在R console 上按下STOP 按钮。

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

【问题讨论】:

    标签: r exit halt


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        当我在循环内执行时,我会隐藏

        k <- k  + 1 
        print(k)
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-27
          • 2021-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多