Code: Alles auswählen
from multiprocessing import Process, Queue
def reduce(que, data):
que.put(sum(data))
def calc_mean_serial(data):
return sum(data) / len(data)
def calc_mean_parallel(data, num_procs=8):
sum = 0
if __name__ == '__main__':
chunk = (int) (len(data) / num_procs)
procs = []
q = Queue()
for i in range(num_procs):
p = Process(target=reduce, args=(q, data[i*chunk:i*chunk+chunk if i != num_procs-1 else None]))
p.start()
procs.append(p)
for p in procs:
p.join()
while not q.empty():
sum = sum + q.get()
return sum / len(data)
print("serial", calc_mean_serial([i for i in range(1,100000)]))
print("parallel", calc_mean_parallel([i for i in range(1,100000)]))
Code: Alles auswählen
serial 50000.0
parallel 50000.0
Code: Alles auswählen
serial 50000.0
serial 50000.0
parallel 0.0
serial 50000.0
parallel 0.0
serial 50000.0
parallel 0.0
serial 50000.0
parallel 0.0
serial 50000.0
parallel 0.0
serial 50000.0
parallel 0.0
serial 50000.0
parallel 0.0
serial 50000.0
parallel 0.0
parallel 50000.0
LG