r语言 - 停止运行提交的代码行



我正在运行一个很长的R脚本,需要2或3天才能完成。我不小心运行了另一个脚本,如果它像 R 通常一样工作,它将进入某个队列,R 将在第一个脚本结束后立即运行它。我需要阻止它,因为它会损害第一个脚本的结果。是否有可见队列或任何其他方法来阻止 R 运行某些代码?

我正在 Windows 10 上的 R studio 中处理交互式会话。

非常感谢任何帮助!

假设您正在控制台(或 R studio 中的交互式会话,这在您的问题中无法确定(中运行,并且您所做的是获取脚本/粘贴代码,并在运行时粘贴另一堆代码:

正在进行的是将数据推送到 R 进程输入流中,它是一个缓冲输入,因此它将在上一个行调用结束后运行每一行并释放进程。

没有简单的方法来玩输入缓冲区,这是R内部输入/输出系统,主要是操作系统现在在缓存中具有这些信息。

询问 R 本身是不可能的,因为它已经有这个缓冲区可以读取,任何新命令都会被追逐。

最后的机会:如果您可以在控制台中发现另一段代码,则可以尝试按esc键停止代码运行。

您可以尝试使用 procexp 弄乱进程缓冲区,但无论如何都有相当大的机会使您的 R 会话出现段错误。

为了避免将来出现这种情况,请使用脚本并使用 Rscript 在命令行上单独运行它们(尽管链接指向 linux 手册页,但也存在于 Windows 下的 R bin 目录中(。
这将为每个脚本创建一个会话,并允许独立终止它们。也就是说,如果它们都写入同一个地方(数据库,如果两个进程访问一个文件会产生错误(,这不会防止数据损坏。

我猜 OP 有以下问题:

# my big code, running for a long time
Sys.sleep(10); print("hello 1")
# other big code I dropped in console while R was still busy with above code
print("hello 2")

如果是这种情况,我认为不可能阻止第二个进程运行。

相关内容

最新更新