Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Travail Avec les Threads | Multithreading vs. Multiprocessing
Concepts Avancés de Python

Travail Avec les Threads

Glissez pour afficher le menu

Le module threading de Python offre un moyen simple mais puissant de créer et de gérer des threads, permettant d'exécuter plusieurs opérations simultanément au sein d'un même processus. Les threads sont des unités d'exécution légères qui partagent le même espace mémoire, ce qui les rend adaptés aux tâches telles que les opérations d'entrée/sortie, l'attente de ressources externes ou la mise à jour d'interfaces utilisateur.

Le cycle de vie d'un thread comprend généralement plusieurs étapes :

  • Création : un objet thread est instancié mais pas encore démarré ;
  • Démarrage : la méthode start() du thread est appelée, le plaçant dans l'état prêt à s'exécuter ;
  • Exécution : le thread exécute sa fonction cible ;
  • Terminaison : le thread termine son exécution, soit en accomplissant sa tâche, soit en rencontrant une exception non gérée.

La gestion des threads nécessite une attention particulière à la synchronisation, car les threads partagent des données et des ressources. Sans synchronisation appropriée, des conditions de concurrence ou des états incohérents peuvent survenir. Le module threading propose des primitives telles que Lock, RLock et Event pour aider à coordonner l'accès des threads aux ressources partagées.

Voici un tableau présentant des fonctions qui vous aideront à créer, gérer et synchroniser efficacement les threads lors du travail avec des tâches concurrentes en Python.

L'exemple suivant montre comment créer et démarrer plusieurs threads à l'aide du module threading, permettant à plusieurs tâches de s'exécuter simultanément.

123456789101112131415161718192021
import threading import time def print_numbers(name): for i in range(1, 4): print(f"Thread {name}: {i}") time.sleep(0.5) # Create thread objects thread1 = threading.Thread(target=print_numbers, args=("A",)) thread2 = threading.Thread(target=print_numbers, args=("B",)) # Start the threads thread1.start() thread2.start() # Wait for both threads to finish thread1.join() thread2.join() print("Both threads have finished.")

Vous définissez une fonction, print_numbers, qui affiche une séquence de nombres accompagnée du nom du thread. Lors de la création de chaque thread, vous transmettez des arguments via le paramètre args : ici, chaque thread reçoit un nom différent ("A" ou "B") afin de distinguer facilement leurs sorties. En appelant la méthode start(), les deux threads commencent leur exécution et s'exécutent simultanément. L'appel à time.sleep(0.5) à l'intérieur de la boucle simule un délai d'exécution, ce qui permet aux threads d'entrelacer leurs sorties et de montrer clairement qu'ils fonctionnent en parallèle. La méthode join() est ensuite utilisée pour attendre que les deux threads se terminent avant de poursuivre, garantissant ainsi que le programme principal ne se termine pas prématurément. Cette approche permet d'exécuter des tâches en parallèle, d'utiliser efficacement les temps d'attente et d'activer l'exécution concurrente au sein d'un même processus.

question mark

Laquelle des affirmations suivantes concernant la synchronisation des threads en Python est correcte ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 3. Chapitre 2
some-alt