#Quelle: https://stackoverflow.com/questions/6976372/mulitprocess-pools-with-different-functions import datetime import multiprocessing import time import random from multiprocessing import Pool def square(x): # calculate the square of the value of x print(x, x*x) return x*x def pf1(*args, **kwargs): sleep_time = random.randint(3, 6) print("Process : %s\tFunction : %s\tArgs: %s\tsleeping for %d\tTime : %s\n" % (multiprocessing.current_process().name, "pf1", args, sleep_time, datetime.datetime.now())) print("Keyword Args from pf1: %s" % kwargs) time.sleep(sleep_time) print(multiprocessing.current_process().name, "\tpf1 done at %s\n" % datetime.datetime.now()) return (sum(*args), kwargs) def pf2(*args): sleep_time = random.randint(7, 10) print("Process : %s\tFunction : %s\tArgs: %s\tsleeping for %d\tTime : %s\n" % (multiprocessing.current_process().name, "pf2", args, sleep_time, datetime.datetime.now())) time.sleep(sleep_time) print(multiprocessing.current_process().name, "\tpf2 done at %s\n" % datetime.datetime.now()) return sum(*args) def pf3(*args): sleep_time = random.randint(0, 3) print("Process : %s\tFunction : %s\tArgs: %s\tsleeping for %d\tTime : %s\n" % (multiprocessing.current_process().name, "pf3", args, sleep_time, datetime.datetime.now())) time.sleep(sleep_time) print(multiprocessing.current_process().name, "\tpf3 done at %s\n" % datetime.datetime.now()) 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__': # Define the dataset dataset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] # Output the dataset print ('Dataset: ' + str(dataset)) # Run this with a pool of 5 agents having a chunksize of 3 until finished agents = 5 chunksize = 3 with Pool(processes=agents) as pool: result = pool.map(square, dataset) print("Result of Squares : %s\n\n" % result) with Pool(processes=3) as pool: result = pool.starmap(smap, [(pf1, [1,2,3], {'a':123, 'b':456}), (pf2, [11,22,33]), (pf3, [111,222,333])])