保持ruby进程永远运行的最佳方法是什么?

时间:2013-04-12 14:20:40

标签: ruby

我必须每秒运行一个file.rb来创建一个微任务(将qwuery插入数据库)。

我使用了for循环(1..10 ^ 9),但我的CPU使用率超过警报!那么什么是不浪费所有CPU的最好方法呢?

2 个答案:

答案 0 :(得分:5)

永远运行的最简单方法就是循环

loop do
  run_db_insert
  sleep 1
end

如果保持1 Hz的速率很重要,请注意db插入需要一些时间,因此一秒睡眠意味着每个周期需要dbtime + 1秒,然后你将稳步落后。如果db交互可靠地小于一秒,则可以修改睡眠以调整下一秒的间隔。

loop do
  run_db_insert
  sleep(Time.now.to_f.ceil - Time.now.to_f)
end

答案 1 :(得分:2)

使用sleep命令的简单循环应该可以完成这项工作。

while true
    # do stuff here
    sleep 1 # wait one second
end