我希望创建一个最多运行一定时间的 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 的 gem,称为 Timers ( https://github.com/tarcieri/timers ),这是我在上面的代码中试图模拟的,但我的实现没有给出我期望的行为,这是循环如果我的工作花费的时间比这更长,则在 5 秒后转到下一次迭代。有什么想法吗?
最佳答案
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
关于ruby - 有没有一种方法可以编写一个 Ruby 循环,该循环在最大设定时间内运行一次迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161783/