Multiprocessing in Python helps the programmers in performing multiple processes in a single go. Here is all you need to know about this module.
Multiprocessing in Python: Running Two Simple Processes
A simple example of using multiple processes would be two processes (workers) that are executed separately. In the following example, two processes are started:
countUp() counts 1 up, every second.
countDown() counts 1 down, every second.
import multiprocessing
import time
from random import randint
def countUp():
i = 0
while i <= 3: print('Up:\t{}'.format(i)) time.sleep(randint(1, 3)) # sleep 1, 2 or 3 seconds i += 1 def countDown(): i = 3 while i >= 0:
print('Down:\t{}'.format(i))
time.sleep(randint(1, 3)) # sleep 1, 2 or 3 seconds i -= 1
if name == 'main':
Initiate the workers.
workerUp = multiprocessing.Process(target=countUp)
workerDown = multiprocessing.Process(target=countDown)
Start the workers. workerUp.start() workerDown.start()
Join the workers. This will block in the main (parent) process
until the workers are complete.
workerUp.join()
workerDown.join()
The output is as follows:
Up: 0
Down: 3
Up: 1
Up: 2
Down: 2
Up: 3
Down: 1
Down: 0
Using Pool and Map
from multiprocessing import Pool
def cube(x):
return x ** 3
if name == "main":
pool = Pool(5)
result = pool.map(cube, [0, 1, 2, 3])
Pool is a class which manages multiple Workers (processes) behind the scenes and lets you, the programmer, use.
Pool(5) creates a new Pool with 5 processes, and pool.map works just like map but it uses multiple processes (the amount defined when creating the pool).
Similar results can be achieved using map_async, apply and apply_async which can be found in the documentation.