我必须运行一个文件.rb,使一个微任务(插入一个qwuery到数据库)每一秒。我使用了一个for循环(1..10^9),但是我得到了一个CPU使用量超过警报!那么什么是不浪费所有CPU的最好方法呢?
bakd9h0s1#
永远运行的最简单方法就是循环
loop do run_db_insert sleep 1 end
字符串如果保持1 Hz的速率很重要,请注意DB插入需要一定的时间,因此1秒的休眠意味着每个周期需要dbtime+1秒,您将稳步落后。如果DB交互可靠地小于1秒,您可以修改休眠以调整下一个1秒的间隔。
loop do run_db_insert sleep(Time.now.to_f.ceil - Time.now.to_f) end
型
nnt7mjpx2#
使用sleep命令的简单循环应该可以完成这项工作。
sleep
while true # do stuff here sleep 1 # wait one second end
字符串
2条答案
按热度按时间bakd9h0s1#
永远运行的最简单方法就是循环
字符串
如果保持1 Hz的速率很重要,请注意DB插入需要一定的时间,因此1秒的休眠意味着每个周期需要dbtime+1秒,您将稳步落后。如果DB交互可靠地小于1秒,您可以修改休眠以调整下一个1秒的间隔。
型
nnt7mjpx2#
使用
sleep
命令的简单循环应该可以完成这项工作。字符串