Ce document est relatif à une vieille version de Python qui n'est plus soutenue. Mettez à jour votre version et lisez Bienvenue sur la documentation de la version stable actuelle de Python.

# Exécution concourante

Les modules documentés dans ce chapitre fournissent des outils d'exécution concourante de code. Le choix de l'outil approprié dépend de la tâche à exécuter (limitée par le CPU (CPU bound), ou limitée la vitesse des entrées-sorties (IO bound)) et du style de développement désiré (coopération gérée par des évènements ou multitâche préemptif). En voici un survol :

- `threading` — Parallélisme basé sur les fils d’exécution (threads)
  - Données locales au fil d'exécution
  - Objets Threads
  - Verrous
  - RLock Objects
  - Condition Objects
  - Semaphore Objects
    - `Semaphore` Example
  - Event Objects
  - Timer Objects
  - Barrier Objects
  - Using locks, conditions, and semaphores in the `with` statement
- `multiprocessing` — Parallélisme par processus
  - Introduction
    - La classe `Process`
    - Contextes et méthodes de démarrage
    - Échange d'objets entre les processus
    - Synchronisation entre processus
    - Partager un état entre les processus
    - Utiliser un réservoir de workers
  - Référence
    - `Process` et exceptions
    - Tubes (pipes) et Queues
    - Divers
    - Objets de connexions
    - Primitives de synchronisation
    - Objets `ctypes` partagés
      - Le module `multiprocessing.sharedctypes`
    - Gestionnaires
      - Gestionnaires personnalisés
      - Utiliser un gestionnaire distant
    - Objets mandataires
      - Nettoyage
    - Pools de processus
    - Auditeurs et Clients
      - Formats d'adresses
    - Clés d'authentification
    - Journalisation
    - Le module `multiprocessing.dummy`
  - Lignes directrices de programmation
    - Toutes les méthodes de démarrage
    - Les méthodes de démarrage spawn et forkserver
  - Exemples
- `multiprocessing.shared_memory` — Mémoire partagée en accès direct depuis plusieurs processus
- Le paquet `concurrent`
- `concurrent.futures` --- Launching parallel tasks
  - Executor Objects
  - ThreadPoolExecutor
    - ThreadPoolExecutor Example
  - ProcessPoolExecutor
    - ProcessPoolExecutor Example
  - Future Objects
  - Module Functions
  - Exception classes
- `subprocess` — Gestion de sous-processus
  - Utiliser le module `subprocess`
    - Arguments fréquemment utilisés
    - Constructeur de Popen
    - Exceptions
  - Considérations de sécurité
  - Objets Popen
  - Utilitaires Popen pour Windows
    - Constantes Windows
  - Ancienne interface (API) haut-niveau
  - Remplacer les fonctions plus anciennes par le module `subprocess`
    - Remplacement de la substitution de commandes de terminal /bin/sh
    - Remplacer les pipes du shell
    - Remplacer `os.system()`
    - Remplacer les fonctions de la famille `os.spawn`
    - Remplacer `os.popen()`, `os.popen2()`, `os.popen3()`
    - Remplacer les fonctions du module `popen2`
  - Remplacement des fonctions originales d'invocation du shell
  - Notes
    - Convertir une séquence d'arguments vers une chaîne de caractères sous Windows
- `sched` --- Event scheduler
  - Scheduler Objects
- `queue` — File synchronisée
  - Objets `Queue`
  - Objets `SimpleQueue`
- `contextvars` — Variables de contexte
  - Variables de contexte
  - Gestion de contexte manuelle
  - Gestion avec asyncio

Les modules suivants servent de fondation pour certains services cités ci-dessus.

- `_thread` — API bas niveau de gestion de fils d'exécution