# encoding: UTF-8 from timeit import default_timer as timer import datetime import multiprocessing import time import random from multiprocessing import Pool def func1(*args, **kwargs): sleep_time = random.randint(3, 6) print(f'Prozess : {multiprocessing.current_process().name}\tFunktion : func1\tArgs:{args}\tgeschlafen {sleep_time} \tZeit : {datetime.datetime.now()}\n') print("Keyword Args from func1: %s" % kwargs) time.sleep(sleep_time) print(f'{multiprocessing.current_process().name}\t func1 fertig: {datetime.datetime.now()}\n') return sum(*args) def func2(*args): sleep_time = random.randint(7, 10) print(f'Prozess : {multiprocessing.current_process().name}\tFunktion : func2\tArgs:{args}\tgeschlafen {sleep_time} \tZeit : {datetime.datetime.now()}\n') time.sleep(sleep_time) print(f'{multiprocessing.current_process().name}\t func2 fertig: {datetime.datetime.now()}\n') return sum(*args) def func3(*args): sleep_time = random.randint(0, 3) print(f'Prozess : {multiprocessing.current_process().name}\tFunktion : func3\ttArgs:{args}\tgeschlafen {sleep_time} \tZeit : {datetime.datetime.now()}\n') time.sleep(sleep_time) print(f'{multiprocessing.current_process().name}\t func3 fertig: {datetime.datetime.now()}\n') return sum(*args) def smap(f, *arg): if len(arg) == 2: args, kwargs = arg return f(list(args), **kwargs) elif len(arg) == 1: args = arg return f(*args) if __name__ == '__main__': start = timer() with Pool(processes=3) as pool: result = pool.starmap(smap, [(func1, [1,2,3],{'a':123, 'b':456}), (func2, [11,22,33]), (func3, [111,222,333])]) print(f'Ergebnis: {result}') ende = timer() diff = ende - start print(f'Ausführzeit: {diff}s')