[PYTHON] Funktionen parallel ausführen

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

Funktionen parallel ausführen
Dualität in der Funktion
Generatorfunktion auch in JavaScript
Paralleler Download mit Python
Covector, um in Funktion zu denken
Erstellen Sie eine Funktion in Python
Verwenden Sie die Rückruffunktion in Python
Führen Sie Python unittest parallel aus
ntile (Dezil) -Funktion in Python
Implementiere die Timer-Funktion im Pygame
Führen Sie externe Befehle mit Python aus
Nichtlineare Funktionsmodellierung in Python
Zeichne die Yin-Funktion in Python
Sofortige Funktion (Lüge) in Python
Implementieren Sie die Funktion power.prop.test von R in Python
Erstellen Sie eine Benutzerauthentifizierungsfunktion in Airflow
Sortierwarnung in der Funktion pd.concat
Definition des Funktionsargumenttyps in Python
Inklusive Notation im Argument der Python-Funktion
Implementierung der Login-Funktion in Django
Schreiben Sie die AWS Lambda-Funktion in Python
Messen Sie die Ausführungszeit von Funktionen in Python
Funktionssynthese und Anwendung in Python
Lesen Sie Dateien parallel zu Python
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
So führen Sie Befehle mit einem Jupyter-Notebook aus
Definieren Sie benutzerdefinierte Aktionen in JupyterHub (Hook-Funktion)
Schreiben und führen Sie SQL direkt in Elixir aus
Unterschied in der Ausgabe der Fensterfunktion mit gerader Länge
Parallele Taskausführung mit concurrent.futures in Python