From b580f7fd5baae442d86795acbdbaff256ad8f82e Mon Sep 17 00:00:00 2001 From: Olli Graf Date: Wed, 29 Mar 2023 16:23:52 +0200 Subject: [PATCH] =?UTF-8?q?Verbesserung=20der=20Parameter=C3=BCbergabe=20u?= =?UTF-8?q?nd=20Berechnung=20aus=20Zahlenliste.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teil12/pool_squares.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/teil12/pool_squares.py b/teil12/pool_squares.py index 8f75df3..7a883c6 100644 --- a/teil12/pool_squares.py +++ b/teil12/pool_squares.py @@ -14,38 +14,48 @@ def print_verbose(s): if __verbose__: print(s) -def calc_square(x, *args,**kwargs): +def calc_sum_square(zahlen, *args,**kwargs): start = kwargs['start'] ende = kwargs['end'] threadnr = kwargs['threadnr'] summe = 0 - print_verbose(f'args={args}') - time.sleep(1.0) - print_verbose(f'kwargs={kwargs}') +# print_verbose(f'x={x}') +# time.sleep(1.0) +# print_verbose(f'kwargs={kwargs}') print_verbose(f'von {start} bis {ende}') for n in range(start,ende): - print_verbose(f'Berechnung:{threadnr}: {n}, {n*n}') - summe = summe + n*n + i = zahlen[n] + print_verbose(f'Berechnung:{threadnr}: {i}, {i*i}') + summe = summe + i*i return summe def smap(f, *arg): args, kwargs = arg + +# print(f'smap() args= {args}') + time.sleep(1.0) +# print(f'smap() kwargs={kwargs}') + time.sleep(1.0) return f(list(args), **kwargs) if __name__ == '__main__': + start = timer() zahlen = [i for i in range(10000000)] + ende = timer() + print(f'Zahlenliste erzeugt in {ende-start}s') + split = int(len(zahlen) / 3) print(f'split={split}') time.sleep(1.0) start = timer() with Pool(processes=3) as pool: - result = pool.starmap(smap, [(calc_square, zahlen, {'threadnr':1,'start':0, 'end':split}), (calc_square, zahlen, {'threadnr':2,'start':split+1,'end':split*2}), (calc_square, zahlen,{'threadnr':3,'start':(split*2)+1,'end':split*3})]) + result = pool.starmap(smap, [(calc_sum_square, zahlen, {'threadnr':1,'start':0, 'end':split}), (calc_sum_square, zahlen, {'threadnr':2,'start':split+1,'end':split*2}), (calc_sum_square, zahlen,{'threadnr':3,'start':(split*2)+1,'end':split*3})]) print(f'Ergebnis: {result}') ende = timer() print(f'Ausführzeit: {ende-start}s')