Source code for neurokit2.misc.parallel_run
[docs]
def parallel_run(function, arguments_list, n_jobs=-2, **kwargs):
"""**Parallel processing utility function** (requires the ```joblib`` package)
Parameters
-----------
function : function
A callable function.
arguments_list : list
A list of dictionaries. The function will iterate through this list and pass each dictionary
inside as ``**kwargs`` to the main function.
n_jobs : int
Number of cores to use. ``-2`` means all but 1. See :func:`.joblib.Parallel`.
**kwargs
Other arguments that can be passed to :func:`.joblib.Parallel`, such as ``verbose``.
Returns
-------
list
A list of outputs.
Examples
---------
.. ipython:: python
import neurokit2 as nk
import time
# The function simply returns the input (but waits 3 seconds.)
def my_function(x):
time.sleep(3)
return x
arguments_list = [{"x": 1}, {"x": 2}, {"x": 3}]
nk.parallel_run(my_function, arguments_list)
"""
# Try loading mne
try:
import joblib
except ImportError as e:
raise ImportError(
"NeuroKit error: parallel_run(): the 'joblib' module is required for this function to run. ",
"Please install it first (`pip install joblib`).",
) from e
parallel = joblib.Parallel(n_jobs=n_jobs, **kwargs)
funs = (joblib.delayed(function)(**arguments) for arguments in arguments_list)
return parallel(funs)