小编cap*_*n82的帖子

使用furrr和future在Shiny中显示进度条

我正在开发一个闪亮的应用程序,我使用furrr::和将耗时的计算拆分为多个会话future。我想在每次(或每 n)次计算后更新进度条。我发现下面的示例会更新进度条,但只有在会话完全完成后才会更新。这意味着最后 6 次更新几乎同时发生。对于非 Shiny 版本有争论.progress = T会导致我想要的更新(请参阅第二个示例)。

有没有类似的东西可以用于闪亮的进度条?如果更新仅取决于第一个工作人员,那就更好了,因为所有工作人员的计算几乎都是相同的。

感谢您提前提供任何帮助!

示例1:

library(shiny)
library(progressr)

app <- shinyApp(
  ui = fluidPage(
    plotOutput("plot")
  ),
  
  server = function(input, output) {
    output$plot <- renderPlot({
      X <- 1:24
      future::plan(future::multisession(workers = 6))
      
      withProgressShiny(message = "Calculation in progress",
                        detail = "This may take a while ...", value = 0, {
                          p <- progressor(along = X)
                          y <- furrr::future_map(X, function(x) {
                            Sys.sleep(1)
                            p()
                          })
                        })
      plot(cars)
    })
  }
)
Run Code Online (Sandbox Code Playgroud)

示例2:

X <- 1:24 …
Run Code Online (Sandbox Code Playgroud)

multithreading future r shiny furrr

6
推荐指数
0
解决办法
356
查看次数

标签 统计

furrr ×1

future ×1

multithreading ×1

r ×1

shiny ×1