Parallele Programmierung in Python
Traditionell wird OpenMP für die parallele Programmierung in C verwendet. Allerdings unterstützt Python OpenMP nicht. Dies wirft die Frage auf: Wie können wir bestimmte Abschnitte des Python-Codes parallelisieren, um die Effizienz zu steigern?
Betrachten Sie die folgende Codestruktur:
solve1(A) solve2(B)
Wobei „solve1“ und „solve2“ unabhängige Funktionen sind. Unser Ziel ist es, diese Funktionen gleichzeitig auszuführen und so die Gesamtlaufzeit zu reduzieren.
In Python können wir das Multiprocessing-Modul nutzen, um Parallelität zu erreichen. Für das gegebene Szenario kann ein Verarbeitungspool eingesetzt werden:
<code class="python">from multiprocessing import Pool pool = Pool() result1 = pool.apply_async(solve1, [A]) # Evaluate "solve1(A)" asynchronously result2 = pool.apply_async(solve2, [B]) # Evaluate "solve2(B)" asynchronously answer1 = result1.get(timeout=10) answer2 = result2.get(timeout=10)</code>
Dieser Ansatz erstellt Prozesse, die bestimmte Aufgaben gleichzeitig bearbeiten. Da keine Prozesse angegeben sind, nutzt der Code die verfügbaren CPU-Kerne, sodass jeder Kern gleichzeitig einen Prozess ausführen kann.
Um eine Liste einer einzelnen Funktion zuzuordnen, können wir Folgendes verwenden:
<code class="python">args = [A, B] results = pool.map(solve1, args)</code>
Beachten Sie, dass die Verwendung von Threads nicht empfohlen wird, da die GIL (Global Interpreter Lock) Operationen an Python-Objekten einschränkt. Durch die Verwendung von Prozessen wird diese Einschränkung umgangen und echte Parallelität ermöglicht.
Das obige ist der detaillierte Inhalt vonWie erreicht man Parallelität in Python für mehr Effizienz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!