Maison >développement back-end >Tutoriel Python >Comment puis-je exécuter plusieurs fonctions Python simultanément en utilisant le parallélisme ?
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!