gpt4 book ai didi

ruby - 如何使 Ruby 脚本每秒运行一次?

转载 作者:数据小太阳 更新时间:2023-10-29 08:14:14 25 4
gpt4 key购买 nike

我有一个需要大约每秒运行一次的 Ruby 脚本。我正在使用 Ruby 脚本来跟踪目录中文件的修改,并希望脚本在“实时”时间跟踪更新。

基本上,我希望我的脚本执行与在 Unix shell 上运行“top”相同的操作,其中屏幕大约每秒更新一次。 Ruby 中是否有与 JavaScript 中的 setInterval 等效的东西?

最佳答案

有几种方法可以做到这一点。

快速而简单的版本:

  1. 外壳(科尔语):

    while :; do
    my_ruby_script.rb
    sleep 1
    done
  2. 观看(1):

    shell$ watch -n 1 my_ruby_script.rb

    这将每秒运行一次脚本,并在终端中显示最近一次运行的输出。

  3. 在 ruby 中:

    while true
    do_my_stuff
    sleep 1
    end

这些都遇到了同样的问题:如果实际的脚本/函数需要时间来运行,它会使循环运行的时间少于每秒。

这是一个 ruby​​ 函数,它会确保(几乎)准确地每秒调用一次该函数,只要该函数不超过一秒:

def secondly_loop
last = Time.now
while true
yield
now = Time.now
_next = [last + 1,now].max
sleep (_next-now)
last = _next
end
end

像这样使用它:

secondly_loop { my_function }

关于ruby - 如何使 Ruby 脚本每秒运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13791964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com