Sobes.tech
Junior — Middle

Peut-on exécuter plusieurs tâches simultanément dans un seul thread en Python?

sobes.tech IA

Réponse de l'IA

En Python, dans un seul thread, il est possible d’effectuer plusieurs tâches simultanément en utilisant la programmation asynchrone (asyncio) ou des générateurs, qui permettent de passer d’une tâche à l’autre sans créer de nouveaux threads. Cependant, en raison du GIL (Global Interpreter Lock) dans l’implémentation standard de CPython, l’exécution simultanée de plusieurs threads exécutant du code Python est limitée : un seul thread s’exécute à la fois.

Exemple avec asyncio pour l’exécution simultanée de tâches dans un seul thread :

import asyncio

async def tache(nom, delai):
    await asyncio.sleep(delai)
    print(f"Tâche {nom} terminée")

async def main():
    await asyncio.gather(
        tache('A', 1),
        tache('B', 2),
        tache('C', 1.5)
    )

asyncio.run(main())

Ainsi, plusieurs tâches peuvent s’exécuter "en parallèle" dans un seul thread, en changeant de tâche selon le temps d’attente, mais pas simultanément dans le sens du multitâche.