24

Donc, je suis en train de jouer avec Stackless Python et une question surgit dans ma tête, c'est peut-être une connaissance "supposée" ou "commune", mais je ne la trouvais nulle part sur le stackless site.Python sans pile et multicores?

Est-ce que Stackless Python tire parti des processeurs multicœurs? En Python normal vous avez le GIL étant constamment présent et pour faire (vrai) l'utilisation de plusieurs cœurs vous devez utiliser plusieurs processus, est-ce vrai aussi pour Stackless?

+0

alias Coopérative multitâche .. –

Répondre

39

Python sans empilage et non utiliser n'importe quel environnement multicœur sur lequel il s'exécute.
Il s'agit d'une idée fausse commune à propos de Stackless, car elle permet au programmeur de tirer parti de la programmation par thread. Pour beaucoup de gens ces deux sont étroitement liés, mais sont, en fait, deux choses distinctes.

En interne, Stackless utilise un planificateur round-robin pour planifier tous les tasklet (micro-threads), mais aucune tâche ne peut être exécutée simultanément avec une autre. Cela signifie que si une tasklet est occupée, les autres doivent attendre jusqu'à ce que cette tasklet abandonne le contrôle. Par défaut, le planificateur n'arrête pas une tâche et donne l'heure du processeur à un autre. Il est de la responsabilité de la tâche de se replacer à la fin de la file d'attente de planification en utilisant Stackless.schedule(), ou en finissant ses calculs.

toutes les tâches sont donc exécutées de façon séquentielle, même lorsque des cœurs multiplets sont disponibles.

La raison pour laquelle Stackless n'a pas de support multi-cœur est que cela facilite beaucoup les threads. Et cela est juste ce que stackless est tout au sujet:

from the official stackless website

Stackless Python est un amélioré version de la programmation Python langage. Il permet aux programmeurs de profiter des avantages de la programmation à base de threads sans les performances et les problèmes de complexité associés avec les threads conventionnels. Les microfiletages que Stackless ajoute à Python sont un pas cher et léger commodité qui peut si elle est utilisée correctement , donner les avantages suivants:

  • structure du programme amélioré.
  • Code plus lisible.
  • Augmentation de la productivité des programmeurs.

Voici un link à un peu plus d'informations sur plusieurs cœurs et stackless.