Skip to content

Instantly share code, notes, and snippets.

@andrie
Created February 21, 2015 13:53
Show Gist options
  • Save andrie/d4f9afdf1c9166fa906f to your computer and use it in GitHub Desktop.
Save andrie/d4f9afdf1c9166fa906f to your computer and use it in GitHub Desktop.
Creating progress bars from each parallel worker using foreach and doParallel
library(foreach)
library(iterators)
library(doParallel)
library(tcltk)
# Choose number of iterations
n <- 1000
cl <- makeCluster(8)
registerDoParallel(cl)
time3 <- system.time({
clusterExport(cl, c("n")) # Export max number of iteration to workers
k <- foreach(i = icount(n), .packages = "tcltk", .combine = c) %dopar% {
if(!exists("pb")) pb <- tkProgressBar("Parallel task", min=1, max=n)
setTkProgressBar(pb, i)
Sys.sleep(0.05)
log2(i)
}
})
#Stop the cluster
stopCluster(cl)
print(time3)
@bshor
Copy link

bshor commented May 6, 2015

I tried this code but got the error, " Error in { : task 1 failed - "non-numeric argument to mathematical function"

@MySchizoBuddy
Copy link

works fine for me

@yaakovfeldman
Copy link

Don't think this works with windows.

@thaoz
Copy link

thaoz commented Jan 10, 2018

This works fine for me on windows .

@thiagoveloso
Copy link

Any way to do this under a nested foreach loop?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment