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