Traitement parallèle en Python : Accélérer votre code

Exploiter le multiprocessus pour un calcul efficace

Apprenez à améliorer les performances de votre programme Python en utilisant des techniques de traitement parallèle. Ce tutoriel couvre les bases du module multiprocessing avec des exemples pratiques pour vous aider à exécuter des tâches de manière concurrente.

Programmation
Auteur·rice
Affiliation
Date de publication

5 février 2024

Modifié

29 avril 2025

Mots clés

Traitement parallèle en Python, le multiprocessing en Python, programmation concurrente, Performances de Python

Introduction

Dans les applications modernes, les performances sont essentielles. Lorsqu’il s’agit de tâches à forte intensité de calcul, l’exécution séquentielle du code peut constituer un goulot d’étranglement. Le module multiprocessing de Python offre un moyen de contourner cette limitation en vous permettant d’exécuter des tâches simultanément sur plusieurs cœurs de CPU. Ce tutoriel vous présentera les principes fondamentaux du traitement parallèle en Python et vous montrera comment exploiter la puissance du multiprocessing pour accélérer votre code.



Qu’est-ce que le traitement parallèle?

Le traitement parallèle consiste à diviser une tâche en sous-tâches qui peuvent être exécutées simultanément. Cette approche peut réduire considérablement le temps nécessaire au traitement des données, aux calculs et à d’autres tâches. En Python, le module multiprocessing vous permet de créer et de gérer des processus distincts, chacun s’exécutant simultanément avec d’autres.

Premiers pas avec le module multiprocessus

Exemple de base : Utilisation d’un pool de processus

La classe multiprocessing.Pool simplifie l’exécution d’une fonction sur plusieurs valeurs d’entrée en distribuant les données d’entrée entre les processus. L’exemple ci-dessous montre comment calculer simultanément le carré d’un nombre.

import multiprocessing

# Définir une fonction pour calculer le carré d'un nombre
def square(n):
    return n * n

if __name__ == "__main__":
    numbers = [1, 2, 3, 4, 5]
    # Créer un pool de processus de travail
    with multiprocessing.Pool(processes=3) as pool:
        # Mapper la fonction square à la liste des nombres
        results = pool.map(square, numbers)
    print("Squares:", results)

Explication

  • Pool: L’objet Pool crée un pool de processus de travail. Dans cet exemple, nous spécifions processes=3, ce qui signifie que jusqu’à trois processus s’exécuteront simultanément.
  • map(): La fonction pool.map() applique la fonction square à chaque élément de la liste simultanément, renvoyant une liste de résultats.
  • Guarding the Main Block: Le bloc if __name__ == '__main__': est essentiel lors de l’utilisation du multiprocessing en Python afin d’éviter la création récursive de processus sous Windows.

Utilisation avancée

Le module multiprocessing offre des fonctionnalités supplémentaires telles que:

  • Parallélisme basé sur les processus : Créer des processus individuels en utilisant multiprocessing.Process.
  • Communication interprocessus: Utilisation de files d’attente et de tuyaux pour partager des données entre les processus.
  • **Des outils tels que les verrous, les sémaphores et les événements pour gérer l’accès concurrent aux ressources partagées.

Explorez ces sujets avancés au fur et à mesure que vous vous familiarisez avec les bases du multiprocessing.

Bonnes pratiques

  • Utiliser la garde principale: Toujours inclure if __name__ == '__main__': lors de l’utilisation du multiprocessing pour assurer une gestion correcte des processus.
  • Gérer les ressources avec soin: Utiliser des gestionnaires de contexte (par exemple, with multiprocessing.Pool() as pool:) pour s’assurer que les processus sont correctement fermés.
  • Profilez votre code: Utilisez les outils de profilage pour déterminer si le traitement parallèle est bénéfique pour votre tâche spécifique.
  • Considérer les frais généraux: Rappelez-vous que la création de processus entraîne des frais généraux, de sorte que le traitement parallèle est plus avantageux pour les tâches liées à l’unité centrale.

Conclusion

Le traitement parallèle avec le module multiprocessing de Python peut accélérer considérablement vos programmes en exécutant des tâches simultanément. En comprenant et en appliquant les techniques abordées dans ce tutoriel, vous pouvez optimiser les performances de votre code et vous attaquer plus efficacement aux tâches de calcul intensif.

Plus d’informations

Bon codage et prenez plaisir à accélérer vos applications Python grâce au traitement parallèle!

Explorer d’autres articles

Note

Voici d’autres articles de la même catégorie pour vous aider à approfondir le sujet.

placeholder

placeholder
Aucun article correspondant
Retour au sommet

Réutilisation

Citation

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Traitement parallèle en Python : Accélérer votre code},
  date = {2024-02-05},
  url = {https://www.datanovia.com/fr/learn/programming/python/advanced/parallel-processing/fundamentals.html},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
Kassambara, Alboukadel. 2024. “Traitement parallèle en Python : Accélérer votre code.” February 5, 2024. https://www.datanovia.com/fr/learn/programming/python/advanced/parallel-processing/fundamentals.html.