Как поставить задержку на цикл в Ruby?

например, если я хочу сделать таймер, как мне сделать задержку в цикле, чтобы он считался в секундах, а не просто цикл через миллисекунду?

2 ответов


"комментарий" выше - это ваш ответ, учитывая очень простой прямой вопрос, который вы задали:

1.upto(5) do |n|
  puts n
  sleep 1 # second
end

возможно, вы хотите периодически запускать метод, не блокируя остальную часть кода. В этом случае вы хотите использовать поток (и, возможно, создать мьютекс, чтобы гарантировать, что две части кода не пытаются изменить одну и ту же структуру данных одновременно):

require 'thread'

items = []
one_at_a_time = Mutex.new

# Show the values every 5 seconds
Thread.new do
  loop do
    one_at_a_time.synchronize do
      puts "Items are now: #{items.inspect}"
      sleep 5
    end
  end
end

1000.times do
  one_at_a_time.synchronize do
    new_items = fetch_items_from_web
    a.concat( new_items )
  end
end