微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

结合进度条等待未来在 Shiny 中完成

如何解决结合进度条等待未来在 Shiny 中完成

我在 R 中有一个很长的任务,需要进行大量计算并写出几个文件。这个函数是从 Shiny-reactive 中调用的。由于花费了太多时间,我想在多个进程上并行化它,但同时我想为最终用户包含一个进度条。我密切关注这篇使用 futures: Using standard R shiny progress bar in parallel foreach calculations .

的帖子的答案

然而:我的函数创建的文件稍后用于在另一个反应中做一些进一步的处理。不知何故,我无法让这第二个反应性等到我的未来完全完成 - 它已经尝试读取尚未存在或不完整的文件。我如何告诉第二个反应性等待未来完成?

到目前为止我的代码

library(promises)
library(future)
library(ipc)

plan(multisession)

r1 <- eventReactive(input$go_Button,{
  Runs <- 1:3  #3 parallel runs
  prog <- list()   #Setup for Progressbar
  
  for (j in Runs) {
    prog[[j]] <- AsyncProgress$new(message = "Calculation")
    future_promise({
      for (k in 1:length(rawdata_entries)) {
        prog[[j]]$inc(1 / length(rawdata_entries))
        
        <<< VERY LONG TASK THAT CREATES SEVERAL FILES >>>
          
      }
      prog[[j]]$close()
    }) # end of future_promise
  } # end of for loop
  
  return(list("Done"=TRUE))   
  
}) # end of eventReactive



r2 <- reactive({
  if (r1()$Done == TRUE) {  #my naive approach that doesn't work 
    <<<do some further processing with the files r1() created >>>
    <<< creates the data-frame "some_results" >>>    
  
      return(some_result)
  }
})

我想实现的最重要的事情是:

  • 并行化耗时的计算
  • 为最终用户提供一个进度条
  • 在继续下一步之前充分评估承诺

我的错误在哪里/是什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?