Sometimes, we want to get the return value of a function passed to Python multiprocessing.Process.
In this article, we’ll look at how to get the return value of a function passed to Python multiprocessing.Process.
How to get the return value of a function passed to Python multiprocessing.Process?
To get the return value of a function passed to Python multiprocessing.Process, we can use the manager.dict method to create a shared variable.
For instance, we write
import multiprocessing
def worker(procnum, return_dict):
print(str(procnum) + " represent!")
return_dict[procnum] = procnum
if __name__ == "__main__":
manager = multiprocessing.Manager()
return_dict = manager.dict()
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i, return_dict))
jobs.append(p)
p.start()
for proc in jobs:
proc.join()
print(return_dict.values())
to create a Process object with the target set to the worker function that runs for each process.
Then we set the args to a tuple with the arguments for worker.
Then we call jobs.append to append the process p to jobs.
And then we call p.start to start the process.
Next, we have a for loop that calls join to block the main process from running until the proc process terminates.
And then we get the returned values of worker with return_dict.values().
Conclusion
To get the return value of a function passed to Python multiprocessing.Process, we can use the manager.dict method to create a shared variable.