有没有办法让#34;计时器"在Ruby中运行Timeout模块时的值?说我有这段代码:
require 'timeout'
begin
status = Timeout::timeout(180) {
sleep(10) until some action
}
rescue Timeout::Error
puts 'That took too long, exiting...'
end
所以我想要的是每次迭代后我等待的总时间的总值。因此,在前10秒后,我等了10秒,在第二次10秒后,我等了20秒,依此类推。
我如何获得整体价值?
答案 0 :(得分:1)
超时仅产生总秒数,所以这里是一个如何得到它的例子:
Timeout::timeout 5 do |sec|
puts sec # => prints 5
sleep 2
puts sec # => prints 5
end
因此,要实现“整体”价值(从一开始就浪费时间),我认为你必须做这样的事情:
Timeout::timeout 5 do |sec|
start = Time.now
puts (Time.now - start).round # => prints 0
sleep 2
puts (Time.now - start).round # => prints 2
end
我不知道是否有更好的方法可以做到这一点,但这很有效。