我正在并行运行多个MCMC。如何跟踪每个MCMC的进度?我不是问如何跟踪并行循环的进度,即每个MCMC何时完成;相反,我想知道嵌套在并行循环中的每个MCMC的进度。有没有办法设置多个进度条?或者我需要在嵌套的循环中保存一些文件来监视?
#not executed so not sure if actually reprex, but the concept is there
#computer is still running my other code :)
library(foreach)
library(doParallel)
cl <- makeCluster(mc <- getOption("cl.cores", parallel::detectCores()))
registerDoParallel(cl)
reprex <- foreach(1:10) %dopar% {
for(ii in 1:100){
#I want to track this loop's progress within each instance
Sys.sleep(0.1)
}
}
stopCluster(cl)
2条答案
按热度按时间csbfibhn1#
当然,在R中没有对多个进度条的一般支持,至少在R控制台中没有跨多行的支持。
除此之外,futureverse与doFuture和progressr可以为您提供近乎实时的进度更新。要点如下:
fnvucqvd2#
谢谢你的代码,它帮助了很多。
我发现的一个额外的特性是,通过设置class =“sticky”,我可以打印链的一些值,并且它们保留在控制台中。