3

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

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

4

2 回答 2

7

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

loop do
  run_db_insert
  sleep 1
end

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

loop do
  run_db_insert
  sleep(Time.now.to_f.ceil - Time.now.to_f)
end
于 2013-04-12T17:16:50.773 回答
2

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

while true
    # do stuff here
    sleep 1 # wait one second
end
于 2013-04-12T14:33:50.493 回答