Für C bietet OpenMP einen unkomplizierten Mechanismus zum Parallelisieren von Code. Allerdings stehen Python-Benutzer bei der Suche nach ähnlichen Funktionen vor Herausforderungen. Dieser Leitfaden zielt darauf ab, diese Herausforderungen anzugehen, indem er eine auf Python zugeschnittene Lösung vorstellt, die es Programmierern ermöglicht, die Leistungsfähigkeit der Parallelverarbeitung zu nutzen, um ihren Code zu optimieren.
Konkret werden wir ein Szenario untersuchen, das zwei unabhängige Funktionen beinhaltet,solve1(A ) undsolve2(B), die parallel und nicht sequentiell ausgeführt werden müssen. Der bereitgestellte Beispielcode hebt diese Funktionen wie folgt hervor:
<code class="python">def solve(Q, G, n): ... setinneropt, partition, x = setinner(Q, G, n) ... if ... node1 = partition[0] node2 = partition[1] ...</code>
Die Schlüsselfunktionen hier sind setinner und setouter, die die unabhängigen Aufgaben darstellen, die wir parallelisieren möchten.
Der empfohlene Ansatz nutzt das Multiprocessing-Modul von Python. insbesondere seine Verarbeitungspools. Diese Pools verwenden generische Worker-Prozesse und weisen jedem CPU-Kern auf Ihrem Computer einen Worker zu. Folglich können mehrere Arbeitsprozesse gleichzeitig die zugewiesenen parallelen Aufgaben ausführen.
Für unser spezifisches Szenario würde der Code so aussehen:
<code class="python">from multiprocessing import Pool pool = Pool() result1 = pool.apply_async(setinner, [Q, G, n]) # Evaluate "setinner(Q, G, n)" asynchronously result2 = pool.apply_async(setouter, [Q, G, n]) # Evaluate "setouter(Q, G, n)" asynchronously answer1 = result1.get(timeout=10) answer2 = result2.get(timeout=10)</code>
Durch die Erstellung eines Verarbeitungspools delegieren wir im Wesentlichen die Ausführung dieser unabhängigen Funktionen, um Prozesse zu trennen und so effektiv eine parallele Verarbeitung zu erreichen.
Es ist wichtig zu beachten, dass die Verwendung von Threads für die parallele Programmierung in Python aufgrund der Global Interpreter Lock (GIL) nicht ratsam ist, die gleichzeitige Vorgänge verhindert Python-Objekte. Daher werden für Pythons parallele Programmierbemühungen Prozesse anstelle von Threads empfohlen.
Das obige ist der detaillierte Inhalt vonWas ist der beste Ansatz, um unabhängige Python-Funktionen asynchron zu parallelisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!