R Sys.sleep() 在 mac 上中断/如何进行可中断延迟?

R Sys.sleep() interrupt on mac / how to make interruptable delay?

特定于 Mac -- 简单的可重现示例:

Sys.sleep(60)
print("output")

Sys.sleep() 的帮助页面说它应该检查中断,但它似乎不尊重任何形式的中断,不是 ctrl-c,不是 Esc,不是停止按钮。您可以使用 ctrl-c 中断 运行 来自终端的脚本,但这会杀死整个脚本。

我想设置一个我仍然可以中断的延迟间隔,此时脚本将继续(因此,即使 60 秒尚未过去,"output" 仍会打印)。有没有(希望不要太占用资源)方法来做到这一点?

更一般地说,有什么方法可以在您不在终端时中断 Sys.sleep 对 Mac 的调用,而不管之后发生什么?

似乎仍未解决此问题的相关资源:

How do I interrupt R?

https://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html#How-can-I-interrupt-lengthy-operations-or-output_003f <-- 显然可以从终端注入中断?但这很笨拙,肯定没有达到主要目标。

这是我发现的一种可能性,使用系统睡眠而不是 R 版本:

system("sleep 60")
print("output")

这允许在 Mac 上使用 Esc 退出系统睡眠(同时 R 控制台保持焦点),因此提供了一个可行的解决方案。

不是很优雅,但非常好用。

(标记我自己的 post,但如果有人提出更好的解决方案,他们可以进行检查。)