Un thread ça va, c'est quand il y a en plusieurs qu'on a des problèmes.
Gérer plusieurs threads et plusieurs processus est très compliqué. Python est de plus en plus stable au fil du temps, à force que des utilisateurs remontent des crashs sur des cas tordus. Il y a par exemple régulièrement des bugs remontés sur l'erreur EINTR qui n'est pas bien gérée par le module subprocess : à force de corriger cette erreur, ça devrait être bon à la fin :-) Les interactions entre threads et signaux sont aussi gérés de manière plus fiable. Python 3.2 ajoute un module concurrent.futures qui abstrait un peu plus la programmation concurrentielle.
La programmation concurrentielle est également facilité par le support de timeout sur les verrous (ex: threading.Lock.acquire depuis Python 3.3) et les processus (ex: subprocess.Popen.communicate depuis Python 3.3).
Tu peux sûrement te contenter de Python 2.7, mais ça te coûtera plus cher en temps de développement, et surtout en débogage je pense. (pour retomber sur des bugs déjà corrigés dans Python 3 ?)
[^] # Stabilité, threads, processus et asynchronisme
Posté par Victor STINNER (site web personnel) . En réponse au journal Python 3.3.0 release candidate 2. Évalué à 2.
Un thread ça va, c'est quand il y a en plusieurs qu'on a des problèmes.
Gérer plusieurs threads et plusieurs processus est très compliqué. Python est de plus en plus stable au fil du temps, à force que des utilisateurs remontent des crashs sur des cas tordus. Il y a par exemple régulièrement des bugs remontés sur l'erreur EINTR qui n'est pas bien gérée par le module subprocess : à force de corriger cette erreur, ça devrait être bon à la fin :-) Les interactions entre threads et signaux sont aussi gérés de manière plus fiable. Python 3.2 ajoute un module concurrent.futures qui abstrait un peu plus la programmation concurrentielle.
La programmation concurrentielle est également facilité par le support de timeout sur les verrous (ex: threading.Lock.acquire depuis Python 3.3) et les processus (ex: subprocess.Popen.communicate depuis Python 3.3).
Tu peux sûrement te contenter de Python 2.7, mais ça te coûtera plus cher en temps de développement, et surtout en débogage je pense. (pour retomber sur des bugs déjà corrigés dans Python 3 ?)