evaluates the expression expr on all available parallel kernels and returns the list of results obtained.


evaluates expr on the parallel kernel specified.


evaluates expr on the parallel kernels keri.


wraps the head h around the results before returning them.

Details and Options


open allclose all

Basic Examples  (1)

Obtain each parallel kernel's unique ID number:

Obtain each parallel kernel's system process ID:

Scope  (6)

Use ParallelEvaluate to perform initializations on all parallel kernels:

Make definitions of local functions on all parallel kernels:

Obtain local properties of all parallel kernels:

Obtain a local property from a single kernel:

Access data from sources local to the parallel kernels:

Save results computed on the parallel kernels locally in unique files:

Verify that the files have been written:

Prevent local reevaluation of results returned from subkernels:

Generalizations & Extensions  (2)

Specify the kernels to query by a kernel object or a kernel ID:

Query several kernels:

All can be used to specify all available kernels:

All is equivalent to Kernels[]:

Options  (5)

DistributedContexts  (5)

By default, definitions in the current context are distributed automatically:

Do not distribute any definitions of functions:

Distribute definitions for all symbols in all contexts appearing in a parallel computation:

Distribute only definitions in the given contexts:

Restore the value of the DistributedContexts option to its default:

Applications  (4)

Tabulate properties of all parallel kernels:

Parallelize a Monte Carlo simulation by running the same code on all parallel kernels:

Combine the individual averages for a more accurate overall result:

Store large intermediate results locally on each parallel kernel:

Work with data stored locally:

Check whether all of these polynomials are irreducible:

Shared variables used for synchronization:

Run one search loop on each kernel until the computation is aborted:

Properties & Relations  (5)

ParallelEvaluate performs the same evaluation on each subkernel:

Parallelize distributes parts of an evaluation to each subkernel:

Deterministic calculations give the same result on each parallel kernel:

Calculations involving randomness give independent results on each parallel kernel:

Force the same result by setting SeedRandom:

Each parallel kernel has a distinct ID, which can be used to make expressions unique:

DistributeDefinitions uses ParallelEvaluate to transport definitions to all kernels:

An explicit ParallelEvaluate does the same:

Distributed definitions are remembered for new kernels:

The effects of ParallelEvaluate are not remembered:

ParallelNeeds uses ParallelEvaluate to run Needs on all parallel kernels:

Additionally all uses are remembered, so that new kernels also load needed packages:

ParallelEvaluate automatically distributes definitions of functions used:

Possible Issues  (2)

Side effects cannot be used between different parallel kernels:

Use a shared variable to support side effects:

Suppress the automatic distribution of definitions when making definitions with ParallelEvaluate:

Neat Examples  (1)

Find such that is prime, until the computation is manually aborted:

Wolfram Research (2008), ParallelEvaluate, Wolfram Language function, (updated 2020).


Wolfram Research (2008), ParallelEvaluate, Wolfram Language function, (updated 2020).


@misc{reference.wolfram_2020_parallelevaluate, author="Wolfram Research", title="{ParallelEvaluate}", year="2020", howpublished="\url{}", note=[Accessed: 20-January-2021 ]}


@online{reference.wolfram_2020_parallelevaluate, organization={Wolfram Research}, title={ParallelEvaluate}, year={2020}, url={}, note=[Accessed: 20-January-2021 ]}


Wolfram Language. 2008. "ParallelEvaluate." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020.


Wolfram Language. (2008). ParallelEvaluate. Wolfram Language & System Documentation Center. Retrieved from