J'ai un peu regardé pour faire un serveur performant en Python. Un problème qui me semble évident, c'est que Python a un "global interpret lock", c'est à dire que deux threads ne peuvent pas exécuter du code python en même temps. Plus précisement, un thread exécute un certain nombre d'instructions byte-code pendant lesquelles il ne peut pas être interrompu par un autre thread python.
Une instruction "native" (une fonction implémentée en C par exemple) peut relacher le "global lock" (par exemple s'il s'agit d'I/O), mais c'est une exception.
Bref, je ne vois pas comment obtenir des performances géniales si on a ce lock. En plus, d'après ce que j'ai compris on ne peut avoir qu'une instance de l'interpréteur par processus. Les tâches pouvant s'exécuter en parallèle ont ce fameux lock.
Si quelqu'un a mieux compris que moi, qu'il le fasse savoir, j'aimerais pas me présenter comme un auteur de FUD :-)
[^] # Re: Première version packagée de CPS3
Posté par Fabimaru (site web personnel) . En réponse à la dépêche Première version packagée de CPS3. Évalué à 2.
Une instruction "native" (une fonction implémentée en C par exemple) peut relacher le "global lock" (par exemple s'il s'agit d'I/O), mais c'est une exception.
Bref, je ne vois pas comment obtenir des performances géniales si on a ce lock. En plus, d'après ce que j'ai compris on ne peut avoir qu'une instance de l'interpréteur par processus. Les tâches pouvant s'exécuter en parallèle ont ce fameux lock.
Si quelqu'un a mieux compris que moi, qu'il le fasse savoir, j'aimerais pas me présenter comme un auteur de FUD :-)