Python offre trois modèles de concurrence, et le choix correct dépend principalement de savoir si votre travail est lié à l'I/O ou lié au CPU — une décision fortement façonnée par le GIL (qui empêche les threads d'exécuter le code Python en parallèle).
Les trois modèles
threading → multiple threads, ONE process. GIL-limited for CPU.
multiprocessing → multiple PROCESSES, each its own interpreter/GIL → true parallelism.
asyncio → single thread, cooperative coroutines yielding at await points.
