Travail avec les Processus
Glissez pour afficher le menu
Le module multiprocessing de Python permet d'obtenir un véritable parallélisme en lançant des processus séparés, chacun avec son propre interpréteur Python et son propre espace mémoire. Contrairement aux threads, qui partagent la mémoire et s'exécutent dans le même processus, les processus sont complètement isolés les uns des autres. Cette isolation permet d'éviter la limitation du Global Interpreter Lock (GIL), autorisant ainsi plusieurs cœurs de processeur à travailler en parallèle sur des tâches intensives en calcul. Après avoir visionné la vidéo ci-dessus, il faut comprendre que le parallélisme basé sur les processus est particulièrement utile lorsque des calculs lourds sont nécessaires ou pour exploiter plusieurs cœurs sur des tâches qui seraient autrement limitées par le GIL. Le module multiprocessing propose une API familière, similaire à celle du module threading, ce qui facilite la transition entre threading et processing selon les besoins.
Utilisation de ces classes et fonctions pour concevoir des applications parallèles robustes, gérer le partage de données et coordonner l'exécution des processus en Python.
123456789101112131415import multiprocessing import time def print_message(message, delay): time.sleep(delay) print(message) process1 = multiprocessing.Process(target=print_message, args=("Process 1 finished", 2)) process2 = multiprocessing.Process(target=print_message, args=("Process 2 finished", 1)) process1.start() process2.start() process1.join() process2.join()
Cet exemple de code montre comment utiliser le module multiprocessing de Python pour exécuter des tâches en parallèle en créant des processus séparés. L'exemple utilise de simples délais temporels et affiche des messages pour illustrer comment les processus peuvent s'exécuter de manière indépendante et simultanée.
Concepts clés illustrés
-
Création de processus :
- Création de nouveaux processus à l'aide de la classe
multiprocessing.Process; - Chaque processus reçoit une fonction cible (
print_message) et des arguments à transmettre à cette fonction.
- Création de nouveaux processus à l'aide de la classe
-
Démarrage des processus :
- La méthode
start()lance chaque processus, leur permettant de s'exécuter simultanément ; - Une fois démarré, chaque processus exécute sa fonction cible indépendamment des autres.
- La méthode
-
Exécution en parallèle :
- Les deux processus dorment pendant des durées différentes (
2et1secondes) grâce àtime.sleep(); - Comme ils s'exécutent en parallèle, le processus avec le délai le plus court termine en premier, même s'il a été lancé après l'autre.
- Les deux processus dorment pendant des durées différentes (
-
Synchronisation des processus :
- La méthode
join()garantit que le programme principal attend la fin des deux processus avant de continuer ; - Sans
join(), le programme principal pourrait se terminer avant la fin des processus.
- La méthode
Cet exemple montre qu'avec le multiprocessing, les tâches peuvent s'exécuter en même temps sur plusieurs cœurs de processeur, ce qui est idéal pour les opérations gourmandes en ressources CPU qui bénéficient de l'exécution parallèle.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion