I am having difficulty understanding how to use Python's multiprocessing module.
I have a sum from 1 to n where n=10^10, which is too large to fit into a list, which seems to be the thrust of many examples online using multiprocessing.
Is there a way to "split up" the range into segments of a certain size and then perform the sum for each segment?
For instance
def sum_nums(low,high): result = 0 for i in range(low,high+1): result += i return result And I want to compute sum_nums(1,10**10) by breaking it up into many sum_nums(1,1000) + sum_nums(1001,2000) + sum_nums(2001,3000)... and so on. I know there is a close-form n(n+1)/2 but pretend we don't know that.
Here is what I've tried
import multiprocessing def sum_nums(low,high): result = 0 for i in range(low,high+1): result += i return result if __name__ == "__main__": n = 1000 procs = 2 sizeSegment = n/procs jobs = [] for i in range(0, procs): process = multiprocessing.Process(target=sum_nums, args=(i*sizeSegment+1, (i+1)*sizeSegment)) jobs.append(process) for j in jobs: j.start() for j in jobs: j.join() #where is the result?
how do I split a big list into N smaller lists??multiprocessing.PIPEthat something is listening to (or some other form of message passing(sockets etc))