Es gibt viele gute Artikel darüber, wie man ein Argument zu einer Funktion nimmt und es entsprechend dem Wert des Arguments parallel verarbeitet.
Ich habe die Parallelverarbeitung und Parallelverarbeitung von Python gründlich untersucht
Es gab jedoch nicht viele Methoden zur parallelen Verarbeitung mehrerer Funktionen, die keine Argumente enthalten, die bereits während der Entwicklung definiert wurden (obwohl es möglicherweise nur wenige Anwendungsfälle gibt), daher werde ich sie zusammenfassen.
Der Code ist auch auf [Github] zu finden (https://github.com/mynkit/FunctionParallelProcessing).
Da joblib diesmal für die parallele Verarbeitung verwendet wird, installieren wir es, falls Sie es noch nicht installiert haben.
pip install joblib
Erstens ist die Definition einer Funktion, die einfach mehrere Funktionen der Reihe nach ausführt.
def run_func(*funcs):
[f() for f in funcs]
Lassen Sie diese Funktion als Nächstes parallel verarbeitet werden.
from joblib import Parallel, delayed
def parallel_process_func(*target_funcs):
Parallel(n_jobs=-1)([delayed(run_func)(func) for func in target_funcs])
n_jobs ist die Anzahl der gleichzeitigen Verarbeitung, und wenn sie -1 ist, wird die parallele Verarbeitung so weit wie möglich unter Verwendung des Kerns der Maschine durchgeführt. Wenn Sie beispielsweise 3 festlegen, wird 3 parallel verarbeitet.
das ist alles. Bewegen wir es tatsächlich.
def x():
print('-- x() START --')
[i for i in range(10000000)]
print('-- x() END --')
def y():
print('-- y() START --')
[i for i in range(10000000)]
print('-- y() END --')
parallel_process_func(x, y)
Bei der Ausführung sollte die Ausgabe wie folgt aussehen.
-- x() START --
-- y() START --
-- x() END --
-- y() END --
Es wird parallel verarbeitet.
Es scheint, dass die Benutzerfreundlichkeit nicht schlecht ist, da Sie nur den Funktionsnamen an die definierte Funktion parallel_process_func übergeben müssen.
Recommended Posts