Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置Ruby代码运行的时间限制_Ruby - Fatal编程技术网

如何设置Ruby代码运行的时间限制

如何设置Ruby代码运行的时间限制,ruby,Ruby,我想找到一种方法来设置ruby代码的时间限制,以便它在该时间限制到期后退出。我不知道为什么这个问题被否决,使用模块非常简单 这可以让您通过一个块和一个时间段。如果块在时间段内完成,则返回该值。否则将引发异常。示例用法: require 'timeout' def run begin result = Timeout::timeout(2) do sleep(1 + rand(3)) 42 end puts "The result was #{

我想找到一种方法来设置ruby代码的时间限制,以便它在该时间限制到期后退出。

我不知道为什么这个问题被否决,使用模块非常简单

这可以让您通过一个块和一个时间段。如果块在时间段内完成,则返回该值。否则将引发异常。示例用法:

require 'timeout'

def run
  begin
    result = Timeout::timeout(2) do
      sleep(1 + rand(3))
      42
    end
    puts "The result was #{result}"
  rescue Timeout::Error
    puts "the calculation timed out"
  end
end
使用中:

2.0.0p0 :005 > load 'test.rb'
 => true
2.0.0p0 :006 > run
the calculation timed out
 => nil
2.0.0p0 :007 > run
the calculation timed out
 => nil
2.0.0p0 :008 > run
The result was 42
 => nil

为什么不执行
Time.new
,执行X循环,然后检查新时间是否超过开始时间后的时间限制?或者,您无法控制需要很长时间才能运行的功能?如果是这样,您的可能性是1)异步调用它,因此您的代码仍然具有控制权,可以在一段时间后放弃2)如果需要太长的时间,请编写第二个进程来终止第一个进程!回答。言简意赅。但有一个问题是为什么
load
,而不是
require
?在测试脚本时,load会更好,因为require在您更改脚本后不会重新加载它(require跟踪您已经需要的内容,因此不需要多次使用相同的脚本).有没有好的来源来检查
加载
要求
之间的差异?你能推荐我吗?@Priti相当全面。@PuneetGoyal非常感谢你的链接<代码>+1发送给您。这就是我要找的。:)