У меня есть функция parLapply за кнопкой действия приложения Shiny. Думайте об этом как:
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 увеличивается, поскольку я продолжаю нажимать на кнопку действия. Теоретически, я ожидаю, что время выполнения останется несколько стабильным, независимо от количества нажатий на кнопку действия.
Более подробное исследование использования ЦП и памяти показало, что более длительное время выполнения в последующих запусках фактически было связано с увеличением использования памяти параллельными сеансами - см. Скриншоты ниже. Похоже, что хотя я и позвонил stopCluster(cl)
, все еще была некоторая информация, которая передавалась от бега к бегу.
Первый запуск
Седьмой прогон
Что я могу сделать, чтобы исправить это нежелательное увеличение памяти?
Спасибо!