Search code examples
pythonmultiprocessingpython-multiprocessing

Why multiprocessing is slower than simple for loop?


I just learned about multiprocessing and tried to see how fast is it compared to simple for loop. I use simple code to compare it,

import multiprocessing
from time import time as tt

def spawn(num,num2):
    print('Process {} {}'.format(num,num2))
#normal process/single core
st = tt()
for i in range (1000):
    spawn(i,i+1)
print('Total Running Time simple for loop:{}'.format((tt()-st)))

#multiprocessing
st2 = tt()
if __name__ == '__main__':
    for i in range(1000):
        p=multiprocessing.Process(target=spawn, args=(i,i+1))
        p.start()
print('Total Running Time multiprocessing:{}'.format((tt()-st2)))

The output that I got showed that multiprocessing is much slower than the simple for loop

Total Running Time simple for loop:0.09924721717834473
Total Running Time multiprocessing:40.157875299453735

Can anyone explain why this happens?


Solution

  • It is because of the overhead for handling the processes. In this case the creation and deletion of the processes does not weigh up to the performance boost the code gets from running it parallel. If the executed code is more complex there will probably be a speedup.