2013-04-12 31 views
1

我必须运行一个file.rb,每秒创建一个微任务(将qwuery插入到数据库中)。保持ruby进程永久运行的最佳方式是什么?

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

+1

因此,您的查询插入数据库泄漏! – devnull

回答

4

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

loop do 
    run_db_insert 
    sleep 1 
end 

如果你保持1 Hz的频率,注意分贝插入需要一定的时间,所以一秒是非常重要的睡眠意味着每个周期需要dbtime + 1秒,并且你会稳步落后。如果数据库交互可靠地少于一秒,则可以修改睡眠以调整下一个秒的时间间隔。

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

sleep命令的简单循环应执行此项工作。

while true 
    # do stuff here 
    sleep 1 # wait one second 
end 
相关问题