我试图每秒开一次检查,持续30秒。我还没有找到一个明确的方法来使用Ruby。目前尝试这样的事情:
until counter == 30
sleep 1
if condition
do something
break
else
counter +=1
end
类似的问题是它必须使用sleep,这会使线程在其轨道中停留一整秒。有没有其他方法可以在不使用睡眠的情况下实现与上述相似的东西?有没有办法在基于时间的间隔内进行某些循环?
答案 0 :(得分:4)
您可以使用以下内容来估算您正在寻找的内容:
now = Time.now
counter = 1
loop do
if Time.now < now + counter
next
else
puts "counting another second ..."
end
counter += 1
break if counter > 30
end
答案 1 :(得分:1)
您可以做一些简单的事情。.
max_runtime = 10.seconds.from_now
puts 'whatever' until Time.now > max_runtime
答案 2 :(得分:0)
你可以尝试这个,它允许间隔控制
counter == 30
interval = 5 # Check every 5 seconds
interval_timer = 1 # must start at 1
now = Time.now
while Time.now - now < counter
if interval_timer % interval == 0 #Every 5 attempts the activity will process
if condition
stuff
end
end
process_timer = process_timer + 1
end
这将在保证的30秒内发生,间隔可以设置为任何值1或更大。有些东西通过毫秒处理,这将为您提供一个选项,可以节省处理周期。适用于图形处理。