[PYTHON] Exécuter des fonctions en parallèle

Il existe de nombreux bons articles sur la façon de prendre un argument à une fonction et de le traiter en parallèle en fonction de la valeur de l'argument.

J'ai étudié en profondeur le traitement parallèle et le traitement parallèle de Python

Cependant, il n'y a pas eu de nombreuses façons de traiter plusieurs fonctions qui ne prennent pas d'arguments en parallèle, qui ont déjà été définies pendant le développement (bien qu'il puisse y avoir peu de cas d'utilisation), je vais donc les résumer.

Le code peut également être trouvé sur Github

Puisque joblib est utilisé pour le traitement parallèle cette fois, installons-le si vous ne l'avez pas déjà installé.

pip install joblib

Le premier est la définition d'une fonction qui exécute simplement plusieurs fonctions dans l'ordre.

def run_func(*funcs):
    [f() for f in funcs]

Ensuite, laissez cette fonction être traitée en parallèle.

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 est le nombre de traitements simultanés, et lorsqu'il est égal à -1, le traitement parallèle est effectué en utilisant le plus possible le cœur de la machine. Par exemple, si vous le définissez sur 3, il s'agira de 3 traitements parallèles.

c'est tout. Déplaçons-le réellement.

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)

Lorsqu'elle est exécutée, la sortie doit ressembler à ce qui suit.

-- x() START --
-- y() START --
-- x() END --
-- y() END --

Il est traité en parallèle.

Il semble que la convivialité ne soit pas mauvaise car il suffit de passer le nom de la fonction à la fonction parallel_process_func définie.

Recommended Posts

Exécuter des fonctions en parallèle
Dualité en fonction
Fonction générateur même en JavaScript
Téléchargement parallèle avec Python
Covector pour penser en fonction
Créer une fonction en Python
Utiliser la fonction de rappel en Python
Exécuter Python unittest en parallèle
Fonction ntile (décile) en python
Implémenter la fonction de minuterie dans pygame
Exécuter des commandes externes avec python
Modélisation de fonctions non linéaires en Python
Dessiner la fonction Yin en python
Fonction immédiate (lie) en python
Implémenter la fonction power.prop.test de R en python
Créer une fonction d'authentification utilisateur dans Airflow
Avertissement de tri dans la fonction pd.concat
Définition du type d'argument de fonction en python
Notation inclusive dans l'argument de la fonction Python
Implémentation de la fonction de connexion dans Django
Ecrire une fonction AWS Lambda en Python
Mesurer le temps d'exécution de la fonction en Python
Synthèse de fonctions et application en Python
Lire des fichiers en parallèle avec Python
Précautions lors du décapage d'une fonction en python
Prenez la somme logique de List en Python (fonction zip)
Comment exécuter des commandes avec Jupyter Notebook
Définir des actions personnalisées dans JupyterHub (fonction hook)
Écrivez et exécutez SQL directement dans Elixir
Différence de sortie de la fonction de fenêtre de longueur paire
Exécution de tâches parallèles à l'aide de concurrent.futures en Python