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

时间:2016-05-31 16:13:43

标签: r macos sleep interrupt

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

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

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

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

更一般地说,当你不在终端时,有没有办法在Mac上中断Sys.sleep呼叫,无论之后发生了什么?

相关资源似乎仍无法解决这个问题:

How do I interrupt R?

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

1 个答案:

答案 0 :(得分:0)

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

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

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

不完全优雅,但完全可以使用。

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