Parallelisieren einer einfachen Python-Schleife
Die bereitgestellte Python-Schleife iteriert über einen Bereich und führt für jede Iteration eine Berechnung durch. Obwohl es mehrere Möglichkeiten gibt, diese Schleife zu parallelisieren, gibt die Frage an, dass der einfachste Ansatz bevorzugt wird. Im Folgenden werden zwei unkomplizierte Methoden mit Multi-Processing erläutert.
Multiprocessing mit dem Multiprocessing-Modul
Das Multiprocessing-Modul stellt eine ProcessPool-Klasse zum Erstellen eines Pools von Prozessen bereit. Der Code kann wie folgt umgeschrieben werden:
import multiprocessing pool = multiprocessing.Pool(4) out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
Hier wird ein Pool aus vier Prozessen erstellt. Die Methode pool.map() wendet die Funktion calc_stuff auf jedes Element im Iterable an und gibt ein Tupel von Ergebnissen zurück.
Mehrfachverarbeitung mit concurrent.futures.ProcessPoolExecutor
Alternativ Das Modul concurrent.futures stellt eine ProcessPoolExecutor-Klasse bereit, die die Prozesserstellung und -verwaltung vereinfacht. Der Code lautet:
from concurrent.futures import ProcessPoolExecutor with ProcessPoolExecutor() as pool: out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
Beide Ansätze nutzen das Multiprocessing-Modul intern und bieten eine einfache Möglichkeit, die Schleife sowohl in Linux als auch in anderen Betriebssystemen zu parallelisieren.
Das obige ist der detaillierte Inhalt vonWie kann ich eine einfache Python-Schleife mithilfe von Multiprocessing einfach parallelisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!