The progressify package allows you to easily add progress
reporting to sequential and parallel map-reduce code by piping to the
progressify() function. Easy!
library(progressify)
handlers(global = TRUE)
library(crossmap)
slow_fcn <- function(x, y) {
Sys.sleep(0.1) # emulate work
x * y
}
xs <- list(1:5, 1:5)
ys <- xmap(xs, slow_fcn) |> progressify()
This vignette demonstrates how to use this approach to add progress
reporting to crossmap functions such as xmap().
The crossmap package extends purrr with functions that apply
a function to every combination of elements in a list of inputs.
For example, xmap() computes the cross product of its inputs:
library(crossmap)
xs <- list(1:5, 1:5)
ys <- xmap(xs, slow_fcn)
Here xmap() provides no feedback on how far it has progressed,
but we can easily add progress reporting by using:
library(crossmap)
library(progressify)
handlers(global = TRUE)
xs <- list(1:5, 1:5)
ys <- xmap(xs, slow_fcn) |> progressify()
Using the default progress handler, the progress reporting will appear as:
|===== | 20%
The progressify() function supports the following crossmap
functions:
xmap() and variants (xmap_chr(), xmap_dbl(), xmap_int(),
xmap_lgl(), xmap_vec(), xmap_dfc(), xmap_dfr(),
xmap_mat(), xmap_arr())xwalk()map_vec(), map2_vec(), pmap_vec(), imap_vec()