首页 > 解决方案 > R Shiny app中parLapply速度下降的原因是什么?

问题描述

我在 Shiny 应用操作按钮后面有一个 parLapply 函数。把它想象成:

用户界面

library(parallel)
actionButton("do", "some text")

服务器.R

optimize <- function(x){do something complex}

observeEvent(input$do,{
  exetime <- system.time({      
    numCores <- detectCores()
    cl <- makeCluster(numCores-2,type="SOCK") 
    outputs <- parLapply(cl,1:10000,optimize)
    stopCluster(cl)
  })
})    

每次单击操作按钮时,闪亮的应用程序都会并行运行 parLapply 函数,这正是我想要的。我的问题是,当我继续单击操作按钮时,parLapply 的运行时间会增加。从理论上讲,我希望运行时间保持稳定,无论点击操作按钮的次数如何。

对 CPU 和内存使用的更详细调查表明,后期运行中较长的运行时间实际上与并行会话的内存使用增加有关 - 请参见下面的屏幕截图。似乎虽然我打了电话stopCluster(cl),但仍然有一些信息从一个运行到另一个运行。

第一次运行

第七轮

我可以做些什么来纠正这种不希望的内存增加?

谢谢!

标签: rparallel-processingshiny

解决方案


推荐阅读