Maison > développement back-end > Tutoriel Python > Comment puis-je exécuter des fonctions Python en parallèle à l'aide du multitraitement ?

Comment puis-je exécuter des fonctions Python en parallèle à l'aide du multitraitement ?

Susan Sarandon
Libérer: 2024-11-29 20:07:13
original
216 Les gens l'ont consulté

How Can I Run Python Functions in Parallel Using Multiprocessing?

Exécution parallèle de fonctions

En Python, l'exécution séquentielle des fonctions est le comportement par défaut. Cependant, lorsqu’il s’agit d’opérations gourmandes en ressources, il peut être avantageux d’exécuter plusieurs fonctions simultanément pour améliorer les performances. Cet article explique comment exécuter des fonctions en parallèle à l'aide du threading ou du multiprocessing.

Le threading et le multiprocessing sont deux bibliothèques qui fournissent respectivement des mécanismes pour les scénarios multithreading et multiprocessus. Bien que le threading soit plus léger, le multitraitement offre généralement de meilleures performances pour les tâches de calcul.

Prenons un exemple dans lequel nous souhaitons exécuter deux fonctions, func1 et func2, en parallèle. En utilisant le multitraitement, nous pouvons définir les fonctions comme :

def func1():
    # Function 1 code
    print("func1: completing")


def func2():
    # Function 2 code
    print("func2: completing")
Copier après la connexion

Pour exécuter les fonctions en parallèle, nous pouvons utiliser l'approche suivante :

from multiprocessing import Process

p1 = Process(target=func1)
p1.start()
p2 = Process(target=func2)
p2.start()
Copier après la connexion

La méthode start() lance les processus , et ils s'exécutent simultanément. Pour garantir que notre processus principal attend la fin des processus enfants, nous pouvons utiliser la méthode join() :

p1.join()
p2.join()
Copier après la connexion

De plus, nous pouvons encapsuler l'exécution parallèle dans une fonction d'assistance :

def runInParallel(*fns):
    proc = []
    for fn in fns:
        p = Process(target=fn)
        p.start()
        proc.append(p)
    for p in proc:
        p.join()

runInParallel(func1, func2)
Copier après la connexion

Cela nous permet d'exécuter plusieurs fonctions en parallèle avec un appel de fonction simple et concis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal