Rでプログレスバーというのがあったので、やってみる。
OSがLinuxなので、
txtProgressBar
を使ったが、tcltkを使うとGUIっぽいプログレスバーができるらしい。そのときは
library(tcltk) tkProgressBar
を使う。
n <- 10000 for(i in seq(n)){ pb <- txtProgressBar(min=1, max=n, style=3) setTxtProgressBar(pb, i) t.test(rnorm(10)) }
# これが徐々に伸びていく |======================================================================| 100%
並列計算時に進捗がわかるといいなと思っていたのだが、いままで print しても動かないし困っていた。
並列計算時にプログレスバーを動かすのはめんどくさいらしい。
library(foreach) library(utils) library(iterators) library(doParallel) cl <- makeCluster(4, type='SOCK') registerDoParallel(cl) f <- function(){ pb <- txtProgressBar(min=1, max=n-1,style=3) count <- 0 function(...) { count <<- count + length(list(...)) - 1 setTxtProgressBar(pb,count) flush.console() c(...) } } n <- 1000 # Run the loop in parallel k <- foreach(i = seq(n), .final=c, .combine=f()) %dopar% { log2(i) }