我在Shiny应用程序动作按钮后面有一个parLapply函数。认为是:
ui.R
library(parallel)
actionButton("do", "some text")
server.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)
,但仍然有一些信息从头到尾传播。
我能做些什么来纠正这种不希望的内存增加吗?
谢谢!