【问题标题】:How I can set time limit for R code executing by python (rpy2)?如何设置由 python (rpy2) 执行的 R 代码的时间限制?
【发布时间】:2012-03-05 16:44:09
【问题描述】:

我想在 2 秒后停止执行从 python (rpy2) 调用的 R 函数。这是python代码:

signal.signal(signal.SIGALRM, handler)
signal.alarm(2) # set timeout to 2 seconds

# run R code
result = robjects.r('''
      Sys.sleep(10) 
      return("hello")
   ''')

signal.alarm(0) # disable alarm

它不起作用。我必须等待 10 秒才能收到信号 handler

【问题讨论】:

  • 它可以帮助人们确切地知道 如何 是行不通的。错误?只是忽略暂停 10 秒的请求?
  • 简单地忽略暂停 10 秒的请求。 Python对R代码执行时间一无所知,当我通过robjects执行5次时-信号首先出现,称为handler方法,但10秒后,不是2。我想杀死R代码处理2 秒后。

标签: python r timeout rpy2


【解决方案1】:

R 代码的评估不会发布 Python GIL。获取 Python 脚本来监控 R 代码执行时间的唯一方法是拥有两个进程。

您可以检查 rpy2 "testInterruptR()" 的单元测试,尽管在应用程序中实现它的方式要优雅得多。将 SIGINT 发送到运行无限循环的 R 进程。

【讨论】:

  • 谢谢(我无法点击“投票”)。
【解决方案2】:

尝试设置您的警报,然后将您希望超时的操作放在 try catch 块中。警报应该抛出一个可捕获的异常。希望这是有道理的,无论如何它对我有用。

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2017-08-01
    • 2018-04-23
    相关资源
    最近更新 更多