首页 文章

rstudio - 可以在后台运行代码

提问于
浏览
15

关于RStudio的问题 . 假设我在控制台中运行代码:

> code1()

假设 code1() 在控制台上没有打印任何内容,但上面的 code1() 需要一个小时才能完成 . 我等待 code1() 时,我想继续做其他事情 . 可能吗?是否有像 runInBackground 这样的功能,我可以使用如下

> runInBackground(code1())
> code2()

替代方案是运行两个RStudios或编写一个使用 Rscript 运行 code1() 的批处理文件,但我想知道如果没有离开RStudio控制台我能做些什么更容易 . 我试图浏览R 's help documentation but didn' t想出任何东西(或者可能是我没有使用正确的关键字) .

4 回答

  • 9

    future package(我是作者)提供了这个:

    library("future")
    plan(multiprocess)
    
    future(code1())
    code2()
    

    仅供参考,如果您使用

    plan(cluster, workers = c("n1", "n3", "remote.server.org"))
    

    然后在其中一台机器上解析未来的表达式 . 运用

    plan(future.BatchJobs::batchjobs_slurm)
    

    将导致它通过Slurm作业调度程序队列解析 .

    这个问题与Run asynchronous function in R密切相关

  • 5

    您可以随时执行此操作,这不是理想的,但适用于大多数用途:

    shell(cmd = 'Rscript.exe some_script.R', wait=FALSE)
    
  • 0

    parallel包中的mcparallel()函数可以解决问题,如果你在Linux上,那就是......

    library(parallel) Job1 = mcparallel(code1()) JobResult1 = mccollect(Job1)

  • 4

    RStudio从版本1.2开始提供此功能 . 要在后台运行脚本,请在“作业”面板中选择“启动作业” . 您还可以选择将后台作业结果复制到工作环境中 .

相关问题