【问题标题】:scheduling r functions after every particular time interval在每个特定时间间隔之后调度 r 个函数
【发布时间】:2023-03-12 06:04:01
【问题描述】:

我有一个 r 函数,我想在每个预定义的时间间隔后自动运行(调度)(例如每 5 分钟后) 有没有可能,如果可以,那怎么做。

【问题讨论】:

  • 正如@DavidHefferman 所示,函数末尾的 Sys.sleep() 是您想要的。这是一个每 60 秒运行一次的简单函数示例:stackoverflow.com/a/9950670/1036500
  • @Ben 该函数并非每 60 秒运行一次。它在完成后重新启动 60 秒。如果运行需要 2 秒,则每 62 秒运行一次。无论如何,这是一个很小的问题,但我就是那样迂腐! ;-)
  • @DavidHefferman,感谢您的指正!

标签: r


【解决方案1】:

理想情况下,您应该为此使用系统调度程序:Unix 系统上的 cron 或 Windows 系统上的 Scheduled Tasks。

可能有一些要求意味着您不能为函数的每次调用生成一个新进程。如果是这样,则使用无限循环并调用 Sys.sleep() 以等待下一次调用到期。

repeat {
    startTime <- Sys.time()
    runFunction()
    sleepTime <- startTime + 5*60 - Sys.time()
    if (sleepTime > 0)
        Sys.sleep(sleepTime)
}

【讨论】:

  • 即使这可能会延迟几微秒——退出Sys.sleep、返回顶部并计算startTime 所需的时间:-)。我们当中真正的 A-C 可以在循环之前计算 initTime&lt;-Sys.time(),并在每次循环时增加 300(然后将 initTime 与 Sys.time 进行比较)。
  • @carl 也许是这样,但我敢打赌,即使 R 很慢, Sys.time() 的分辨率也比从 Sys.sleep 返回并回到开始所花费的时间更粗糙循环。 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 2011-01-09
  • 1970-01-01
相关资源
最近更新 更多