Lua 程序延迟

Posted

技术标签:

【中文标题】Lua 程序延迟【英文标题】:Lua Program Delay 【发布时间】:2013-12-11 06:26:46 【问题描述】:

我将如何使用它为我的 Lua 程序添加 2 分钟的延迟,这是延迟的代码,但我不知道如何添加延迟。

function sleep(n)
  local t = os.clock()
  while os.clock() - t <= n do
    -- nothing
  end
end

【问题讨论】:

请注意os.clock() 行为不可移植。此外,这个繁忙的循环会不必要地浪费 CPU 资源。使用来自 luasocket 的socket.sleep() 好的,我会用socket.sleep() 【参考方案1】:

os.clock 函数返回程序的 CPU 时间秒数。所以你的sleep函数等待n秒,如果你需要延迟2分钟,只需调用:

sleep(2*60)

请注意,除了忙等待之外,还有一些更好的解决方案可以实现sleep 功能,详情请参阅Sleep Function。

【讨论】:

谢谢,我应该知道 :D【参考方案2】:

也许这会起作用

    function sleep(n)
         n = math.ceil(n)
         if n <= 0 and n > 99999 then return end --If the user enter a number below 0 and higher than 99999 the limit in TIMEOUT command in Windows
         os.execute("timeout /T "..tostring(seconds).." /NOBREAK")
    end

这不会因为忙循环而浪费 CPU 时间 但是“等待 n 秒,按 CTRL+C 退出……” 在 Windows 中,您可以使用 -1 但它会永远等待,所以我限制它,因为永远等待是无用的。而且,如果您不希望“等待 n 秒,请按 CTRL+C 退出 ...”出现,我不知道是否可以在不显示的情况下执行相同的操作。如果你想摆脱它,只需在 os.execute("timeout /T "..tostring(seconds).." /NOBREAK") 语句之后添加 os.execute("cls") ,它将清除控制台

【讨论】:

以上是关于Lua 程序延迟的主要内容,如果未能解决你的问题,请参考以下文章

Lua中,如何控制时间的延迟

在 LUA for 循环的迭代之间应用延迟

简单的lua脚本/鼠标宏

如何在Python中进行时间延迟[重复]

完全解决 MySQL 5.7 主从复制的延迟问题

延迟指标在 Flink 中代表啥?它们真的可以用来评估应用程序的延迟吗?