如何解决使用 furrr 和 future 在 Shiny 中的进度条
我正在开发一个 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)
})
}
)
示例 2:
X <- 1:24
future::plan(future::multisession(workers = 6))
y <-
furrr::future_map(X,function(x) {Sys.sleep(1)
p()
},.progress = T)
future::plan(future::sequential())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。