multicore {future} | R Documentation |
A multicore future is a future that uses multicore evaluation, which means that its value is computed and resolved in parallel in another process.
multicore( ..., workers = availableCores(constraints = "multicore"), envir = parent.frame() )
... |
Additional arguments passed to |
workers |
A positive numeric scalar or a function specifying the maximum number of parallel futures that can be active at the same time before blocking. If a function, it is called without arguments when the future is created and its value is used to configure the workers. The function should return a numeric scalar. |
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 forked # processes as available to the current R process plan(multicore) # Evaluate futures in parallel on the local machine via two forked processes plan(multicore, workers = 2)
For the total number of cores available including the current/main
R process, see parallelly::availableCores()
.
Not all operating systems support process forking and thereby not multicore
futures. For instance, forking is not supported on Microsoft Windows.
Moreover, process forking may break some R environments such as RStudio.
Because of this, the future package disables process forking also in
such cases. See supportsMulticore()
for details.
Trying to create multicore futures on non-supported systems or when
forking is disabled will result in multicore futures falling back to
becoming sequential futures.
A MulticoreFuture
If workers == 1
, then all processing using done in the
current/main R session and we therefore fall back to using
an sequential future. This is also the case whenever multicore
processing is not supported, e.g. on Windows.
For processing in multiple background R sessions, see multisession futures.
Use availableCores()
to see the total number of
cores that are available for the current R session.
Use availableCores("multicore") > 1L
to check
whether multicore futures are supported or not on the current
system.
## Use multicore futures plan(multicore) ## A global variable a <- 0 ## Create future (explicitly) f <- future({ b <- 3 c <- 2 a * b * c }) ## A multicore future is evaluated in a separate forked ## process. 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)