multisession {future} | R Documentation |
A multisession future is a future that uses multisession evaluation, which means that its value is computed and resolved in parallel in another R session.
multisession( ..., workers = availableCores(), lazy = FALSE, rscript_libs = .libPaths(), envir = parent.frame() )
... |
Additional arguments passed to |
workers |
Ignored in future (>= 1.31.0). |
lazy |
If FALSE (default), the future is resolved eagerly (starting immediately), otherwise not. |
rscript_libs |
A character vector of R package library folders that
the workers should use. The default is |
envir |
The environment from where global objects should be identified. |
This function is not meant to be called directly. Instead, the typical usages are:
# Evaluate futures in parallel on the local machine via as many background # processes as available to the current R process plan(multisession) # Evaluate futures in parallel on the local machine via two background # processes plan(multisession, workers = 2)
The background R sessions (the "workers") are created using
makeClusterPSOCK()
.
For the total number of
R sessions available including the current/main R process, see
parallelly::availableCores()
.
A multisession future is a special type of cluster future.
A MultisessionFuture.
If workers == 1
, then all processing using done in the
current/main R session and we therefore fall back to using a
lazy future. To override this fallback, use workers = I(1)
.
For processing in multiple forked R sessions, see multicore futures.
Use parallelly::availableCores()
to see the total number of
cores that are available for the current R session.
## Use multisession futures plan(multisession) ## A global variable a <- 0 ## Create future (explicitly) f <- future({ b <- 3 c <- 2 a * b * c }) ## A multisession future is evaluated in a separate R session. ## Changing the value of a global variable will not affect ## the result of the future. a <- 7 print(a) v <- value(f) print(v) stopifnot(v == 0) ## Explicitly close multisession workers by switching plan plan(sequential)