future (version 1.22.1)

multiprocess: Create a multiprocess future whose value will be resolved asynchronously using multicore or a multisession evaluation

Description

A multiprocess future is a future that uses multicore evaluation if supported, otherwise it uses multisession evaluation. Regardless, its value is computed and resolved in parallel in another process.

WARNING: Consider the 'multiprocess' future plan deprecated. Instead, explicitly specify 'multisession' or 'multicore'. The former works everywhere and is the recommended one between the two. Forked processing, which 'multicore' uses, is unstable in various environment and setups. The 'multiprocess' alias is therefore being phased out.

Usage

multiprocess(..., workers = availableCores(), envir = parent.frame())

Arguments

Additional arguments passed to Future().

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.

Value

A MultiprocessFuture implemented as either a MulticoreFuture or a MultisessionFuture.

See Also

Internally multicore() and multisession() are used.

Examples

Run this code
# NOT RUN {
## Use multiprocess futures
plan(multiprocess)

## A global variable
a <- 0

## Create future (explicitly)
f <- future({
  b <- 3
  c <- 2
  a * b * c
})

## A multiprocess future is evaluated in a separate R 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)

## Explicitly close multisession workers, if they were used
plan(sequential)
# }

Run the code above in your browser using DataLab