有没有一种方法可以编写一个Ruby循环,在设定的最长时间内运行一次迭代?

有没有一种方法可以编写一个Ruby循环,在设定的最长时间内运行一次迭代?,ruby,loops,timer,Ruby,Loops,Timer,我希望创建一个Ruby(MRI 1.9.3)循环,最多运行一段时间,一旦时间到了,它将进入循环的下一次迭代 例如,这就是我希望实现的目标: timer = Timer.new while foo timer.after 5 do # The loop on foo only gets to run for 5 seconds next end # Do some work here end 到目前为止,我已经找到了tarcieri的名为Timers()的gem,这是我在上

我希望创建一个Ruby(MRI 1.9.3)循环,最多运行一段时间,一旦时间到了,它将进入循环的下一次迭代

例如,这就是我希望实现的目标:

timer = Timer.new
while foo
  timer.after 5 do # The loop on foo only gets to run for 5 seconds
    next
  end

  # Do some work here
end

到目前为止,我已经找到了tarcieri的名为Timers()的gem,这是我在上面的代码中试图模拟的,但是我的实现没有给出我期望的行为,如果我的工作需要更长的时间,循环将在5秒后进入下一次迭代。有什么想法吗?

我已经有一段时间没有掌握Ruby技能了,但我相信你可以通过timeout库来做到这一点

require 'timeout'
timeout_in_seconds = 5
while foo
  begin
    Timeout.timeout(timeout_in_seconds) do
      # Do some work here
    end
  rescue Timeout::Error
    next
  end
end
require 'timeout'

while foo
    Timeout.timeout(5) do
        work()
    end
end
您也可以尝试以下方法:

time = 60
time_start = Time.now
begin      
      time_running = Time.now - time_start
      #You_code_goes_here
end until (time_running.to_i >= time)
该循环将一直发生,直到
time\u running
var等于或大于“60”