I am trying to run 5 parallel processes and have also divided the list in 5 blocks but it takes more time than linearly processing in a single process, I have tried other solutions on Stackoverflow but the results are same. If I run the code, this is what I get:
import multiprocessing as mp
import time
def raiseNum(pwr, nums):
for v in nums:
x = v**pwr
if __name__ == '__main__':
# Let's get the cube of all numbers in the list nums
nums = [i for i in range(0, 100000000, 1)]
pwr = 3
## linear processing
start = time.time()
results_l = raiseNum(pwr, nums)
end = time.time()
print('Linear Processing time: ', str(end-start), 'Seconds')
## Parallel processing: 5 Processes
# divide nums list in 5 parts
blockSize = len(nums)//5
numsBlocks = [nums[i: i+blockSize] for i in range(0, len(nums), blockSize)]
processList = []
p0 = mp.Process(target=raiseNum, args=(pwr, numsBlocks[0]))
p1 = mp.Process(target=raiseNum, args=(pwr, numsBlocks[1]))
p2 = mp.Process(target=raiseNum, args=(pwr, numsBlocks[2]))
p3 = mp.Process(target=raiseNum, args=(pwr, numsBlocks[3]))
p4 = mp.Process(target=raiseNum, args=(pwr, numsBlocks[4]))
start = time.time()
p0.start()
p1.start()
p2.start()
p3.start()
p4.start()
p0.join()
p1.join()
p2.join()
p3.join()
p4.join()
end = time.time()
print('5 Parallel Processes time: ', str(end-start), 'Seconds')