Maison >développement back-end >Tutoriel Python >Comment puis-je exécuter plusieurs fonctions Python simultanément en utilisant le parallélisme ?

Comment puis-je exécuter plusieurs fonctions Python simultanément en utilisant le parallélisme ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-18 05:06:02315parcourir

How Can I Run Multiple Python Functions Simultaneously Using Parallelism?

Comment exécuter des fonctions simultanément avec le parallélisme Python

En Python, chercher à exécuter plusieurs fonctions simultanément peut être un défi. En particulier, lorsque les fonctions fonctionnent indépendamment sans interférence mutuelle, attendre qu’une fonction soit terminée avant d’en lancer une autre limite l’efficacité. Pour résoudre ce problème, Python propose deux approches : le threading et le multitraitement.

Explorer le multitraitement pour un véritable parallélisme

Le multitraitement est un choix préférable pour obtenir un véritable parallélisme en Python en raison de les contraintes imposées par CPython. Voici un exemple détaillé qui démontre l'utilisation du multitraitement :

from multiprocessing import Process

def func1():
    print("func1: starting")
    for i in range(10000000):
        pass
    print("func1: finishing")


def func2():
    print("func2: starting")
    for i in range(10000000):
        pass
    print("func2: finishing")


if __name__ == "__main__":
    p1 = Process(target=func1)
    p1.start()
    p2 = Process(target=func2)
    p2.start()
    p1.join()
    p2.join()

Cette approche utilise la classe Process du module multitraitement de Python pour générer et gérer les processus enfants pour chaque fonction. En démarrant et en rejoignant les processus, func1 et func2 peuvent s'exécuter en parallèle.

Encapsulation de l'exécution parallèle

Les mécanismes de démarrage et de jonction des processus peuvent être facilement encapsulés dans un function :

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)

Cette fonction prend un nombre quelconque de fonctions en entrée et lance leur exécution parallèle. Il fait abstraction de la gestion des processus sous-jacents, vous permettant d'exécuter de manière transparente plusieurs fonctions simultanément.

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!

Déclaration:
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