Mirai-based localhost multisession futures

mirai_multisession(
  expr,
  substitute = TRUE,
  envir = parent.frame(),
  ...,
  workers = availableCores()
)

Arguments

expr

An R expression.

substitute

If TRUE, argument expr is substitute():ed, otherwise not.

envir

The environment from where global objects should be identified.

...

Additional named elements of the future.

workers

The number of parallel processes to use. If a function, it is called without arguments when the future is created and its value is used to configure the workers.

Value

An object of class MiraiFuture.

Examples

plan(mirai_multisession)

# A function that returns a future, note that N uses lexical scoping...
f <- function() future({4 * sum((runif(N) ^ 2 + runif(N) ^ 2) < 1) / N}, seed = TRUE)

# Run a simple sampling approximation of pi in parallel using  M * N points:
N <- 1e6  # samples per worker
M <- 10   # iterations
pi_est <- Reduce(sum, Map(value, replicate(M, f()))) / M
print(pi_est)
#> [1] 3.142635

plan(sequential)
invisible(mirai::daemons(0)) ## Shut down mirai workers