In Python the multiprocessing
module can be used to run a function over a range of values in parallel. For example, this produces a list of the first 100000 evaluations of f.
def f(i): return i * i def main(): import multiprocessing pool = multiprocessing.Pool(2) ans = pool.map(f, range(100000)) return ans
Can a similar thing be done when f takes multiple inputs but only one variable is varied? For example, how would you parallelize this:
def f(i, n): return i * i + 2*n def main(): ans = [] for i in range(100000): ans.append(f(i, 20)) return ans
Passing Keyword Arguments to Multiprocessing Processes We can also pass in arguments corresponding to the parameter name using the kwargs parameter in the Process class. Instead of passing a tuple, we pass a dictionary to kwargs where we specify the argument name and the variable being passed in as that argument.
Python multiprocessing Pool can be used for parallel execution of a function across multiple input values, distributing the input data across processes (data parallelism).
multiprocessing. freeze_support() This function will allow a frozen program to create and start new processes via the multiprocessing. Process class when the program is frozen for distribution on Windows.
You can use functools.partial()
def f(i, n): return i * i + 2*n def main(): import multiprocessing pool = multiprocessing.Pool(2) ans = pool.map(functools.partial(f, n=20), range(100000)) return ans
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With