En Python, le threading fonctionne différemment des autres langages de programmation en raison du Global Interpreter Lock (GIL). Ce verrou global empêche les threads d'être exécutés sur plusieurs CPU, limitant ainsi le véritable parallélisme. Cependant, les threads peuvent être utilisés pour éviter les blocages dans les tâches longues, comme les interfaces graphiques, où une tâche intensive peut bloquer l'interface utilisateur.
Nous explorons ici un exemple concret illustrant pourquoi le threading ne peut pas accélérer le traitement des programmes Python pour des tâches intensives en CPU. Nous détaillons ensuite une solution pratique pour utiliser les threads afin de maintenir la réactivité de l'interface utilisateur en Python.
En utilisant deux gros fichiers à zipper en parallèle, nous démontrons que le threading peut même ralentir le programme. Toutefois, pour des cas d'utilisation non bloquante, surtout dans les interfaces graphiques, le threading est extrêmement utile.
Apprenez également à gérer les threads de manière plus efficace avec le ThreadPoolExecutor, une approche qui permet de distribuer le travail entre plusieurs threads sans avoir à gérer la création et la destruction de chaque thread individuellement.