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

Mary-Kate Olsen
Libérer: 2024-11-18 05:06:02
original
231 Les gens l'ont consulté

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()
Copier après la connexion

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)
Copier après la connexion

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!

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