Pool Map mit mehreren Argumenten in Python

Muhammad Waiz Khan 30 Januar 2023
  1. Parallele Funktionsausführung mit der Methode pool.map()
  2. Parallele Funktionsausführung mit mehreren Argumenten unter Verwendung der pool.starmap()-Methode
Pool Map mit mehreren Argumenten in Python

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

Verwandter Artikel - Python Multiprocessing