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

时间:2013-05-09 04:19:43

标签: ruby

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

1 个答案:

答案 0 :(得分:20)

我不确定为什么这个问题被低估了,使用timeout模块很简单。

这可以让你传递一个块和一个时间段。如果块在该时间段内完成,则返回该值。否则抛出异常。使用示例:

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