Pool Map mit mehreren Argumenten in Python
-
Parallele Funktionsausführung mit der Methode
pool.map()
-
Parallele Funktionsausführung mit mehreren Argumenten unter Verwendung der
pool.starmap()
-Methode
Dieser Artikel erklärt verschiedene Methoden zur parallelen Ausführung von Funktionen mit dem multiprocessing
-Modul in Python.
Das Modul multiprocessing
stellt die Funktionalitäten zur Verfügung, um eine parallele Funktionsausführung mit mehreren Eingaben durchzuführen und Eingabedaten über verschiedene Prozesse zu verteilen.
Wir können die Ausführung der Funktion mit verschiedenen Eingabewerten parallelisieren, indem wir die folgenden Methoden in Python verwenden.
Parallele Funktionsausführung mit der Methode pool.map()
Die Methode pool.map(function, iterable)
gibt einen Iterator zurück, der die als Eingabe bereitgestellte function
auf jedes Element der Eingabe iterable
anwendet. Wenn wir also eine parallele Ausführung der function
mit verschiedenen Eingaben durchführen möchten, können wir die Methode pool.map()
verwenden.
Der folgende Beispielcode zeigt, wie die Methode pool.map()
verwendet wird, um die Funktionsausführung in Python zu parallelisieren.
from multiprocessing import Pool
def myfunc(x):
return 5 + x
if __name__ == "__main__":
with Pool(3) as p:
print(p.map(myfunc, [1, 2, 3]))
Ausgabe:
[6, 7, 8]
Wenn die Eingabe Funktion
mehrere Argumente hat, können wir die Funktion parallel ausführen, indem wir die Methode pool.map()
und die Funktion partial()
damit verwenden.
Das folgende Beispiel zeigt, wie die Funktionsausführung mit mehreren Argumenten unter Verwendung von pool.map()
in Python parallelisiert wird.
from multiprocessing import Pool
from functools import partial
def multiply(x, y):
print(x * y)
if __name__ == "__main__":
with Pool(3) as p:
p.map(partial(multiply, 5), [1, 2, 3])
Ausgabe:
5
10
15
Wie im obigen Beispiel zu sehen ist, besteht der Nachteil dieser Methode darin, dass wir den Wert des ersten Arguments nicht ändern können.
Parallele Funktionsausführung mit mehreren Argumenten unter Verwendung der pool.starmap()
-Methode
Wenn wir eine Funktion parallel mit mehreren Argumenten ausführen wollen, können wir dies mit der Methode pool.starmap(function, iterable)
tun.
Wie die Methode pool.map(function, iterable)
gibt die Methode pool.starmap(function, iterable)
einen Iterator zurück, der die als Eingabe bereitgestellte function
auf jedes Element der iterable
anwendet. Dennoch erwartet es, dass jedes iterable
Eingabeelement als iterables Argument für die Eingabe function
angeordnet ist.
Durch die Verwendung der Methode pool.starmap()
können wir im Gegensatz zur Methode pool.map()
allen Argumenten der function
unterschiedliche Werte zuweisen.
Wir können eine parallele Funktionsausführung mit mehreren Argumenten in Python mit der Methode pool.starmap()
auf folgende Weise durchführen.
from multiprocessing import Pool
def print_name(name, lname):
print("full name =", name, lname)
if __name__ == "__main__":
with Pool(3) as p:
p.starmap(print_name, [("Thomas", "Scott"), ("Ali", "Khan")])
Ausgabe:
full name = Thomas Scott
full name = Ali Khan