Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Qui a utilisé stackless python ?

15 réponses
Avatar
BertrandB
En gros avant de me faire suer sur une crosscompilation, j'aurais voulu
avoir un petit reour d'expérience.
Incompatibilités ?
Fonctionnement ?

10 réponses

1 2
Avatar
BertrandB
En gros avant de me faire suer sur une crosscompilation, j'aurais voulu
avoir un petit reour d'expérience.
Incompatibilités ?
Fonctionnement ?


Devant le peu de réponse je me suis lancé je viens de passer la première
phase cruciale de la crosscompilation je finirai peut être ce week end.
La page que j'avais dans le Wiki est maintenant caduque le patch que
j'avais utilisé ayant disparu.
En gros je me cale sur le package Python(2.4.42) de buildroot pour cross
compiler un stackless 2.5.1 mais ça passe pas les doigts dans le nez.
(Dieu sait pourtant que j'ai les narines bien larges ;) )

Avatar
|-| /-\\ |_ \(\)7 [°¿°]
Bonsoir !

La seule fois où je me suis intéressé à Stackless, personne n'a pu vraiment me dire ce que ça
apportait ("en pratique, c'est quoi, quel intérêt à, la continuation?")
Et puis, j'ai remarqué que ce projet vivait par à-coups, avec de très longs mois sans mouvements.
Donc, gros doute sur la pérennité du truc...

@+

Michel Claveau
Avatar
BertrandB
Bonsoir !

La seule fois où je me suis intéressé à Stackless, personne n'a pu
vraiment me dire ce que ça apportait ("en pratique, c'est quoi, quel
intérêt à, la continuation?")
Et puis, j'ai remarqué que ce projet vivait par à-coups, avec de très
longs mois sans mouvements. Donc, gros doute sur la pérennité du truc...

@+

Michel Claveau


J'ai l'impression que Stackless est vivant en ce moment.

C'est essentielement un Hack de C-Python, ffaisant que l'évaluateur
n'utilise plus la pile de C pour les pasages de paramètres. Compte tenu
des problèmes étanges avec le portage sur DSM-G600 que je rencontre il
se pourrait effectivement que ce soit des écrasements de pile.

Il se rajoute une fonctionalité de Tasklet. Si j'ai bien compris
stackless intégre un ordonaceur (round robin) et ces tasklet sont gérées
par cette ordonanceur.
"It allows programmers to reap the benefits of thread-based programming
without the performance and complexity problems associated with
conventional threads. The microthreads that Stackless adds to Python are
a cheap and lightweight convenience which can if used properly, give the
following benefits:
* Improved program structure.
* More readable code.
* Increased programmer productivity."


et description sur python.org :
"Stackless Python is a fork of CPython, but not one that diverges very
far from the main tree. Christian Tismer rewrote the main interpreter
loop of CPython to minimize its use of the C stack; in particular,
calling a Python function in Stackless Python doesn't occupy any more
room on the C stack. This means that, while CPython can only recurse a
few thousand levels deep before filling up the C stack and crashing,
Stackless can recurse to an unlimited depth. Stackless is also
significantly faster than CPython (around 10%), supports continuations
and lightweight threads, and has found a community of highly skilled
users who use it to do things such as writing massively-multiplayer
online games. The Stackless Python home page is at
http://www.stackless.com."

Séduisant non ?

Avatar
MC
Re !

microthreads


Lorsque je m'y étais intéressé, les micro-threads n'étaient pas
implémentés (c'était une promesse pour la version suivante).


J'ai l'impression que Stackless est vivant en ce moment.


Mais, les versions sortent au moins 18 mois de retard sur les versions
Python.







--
@-salutations

Michel Claveau

Avatar
Amaury Forgeot d'Arc
Bonsoir,

Bonsoir !

La seule fois où je me suis intéressé à Stackless, personne n'a pu
vraiment me dire ce que ça apportait ("en pratique, c'est quoi, quel
intérêt à, la continuation?")
Et puis, j'ai remarqué que ce projet vivait par à-coups, avec de très
longs mois sans mouvements. Donc, gros doute sur la pérennité du truc...

@+

Michel Claveau


J'ai l'impression que Stackless est vivant en ce moment.

C'est essentielement un Hack de C-Python, ffaisant que l'évaluateur
n'utilise plus la pile de C pour les pasages de paramètres. Compte tenu
des problèmes étanges avec le portage sur DSM-G600 que je rencontre il
se pourrait effectivement que ce soit des écrasements de pile.


En fait, Stackless utilise quand même la pile "du C". Si on imbrique 10
appels de fonctions, on verra leurs paramètres s'aligner sur cette pile.

Mais Stackless sait s'en libérer quand il le désire, en recopiant une
partie de la pile ailleurs, et en continuant avec la place libérée.

Ce qui lui permet de simuler une pile d'appels beaucoup plus importante,
mais aussi de passer rapidement à autre chose, en remettant en place une
pile enregistrée précédemment.

Il se rajoute une fonctionalité de Tasklet. Si j'ai bien compris
stackless intégre un ordonaceur (round robin) et ces tasklet sont gérées
par cette ordonanceur.


Il y a d'autres modèles. Par exemple, deux tasklets peuvent être reliées
par des "Channels": quand une tâche écrit dans le Channel, elle réveille
celle qui est à l'écoute.

"It allows programmers to reap the benefits of thread-based programming
without the performance and complexity problems associated with
conventional threads. The microthreads that Stackless adds to Python are
a cheap and lightweight convenience which can if used properly, give the
following benefits:
* Improved program structure.
* More readable code.
* Increased programmer productivity."


Moi, j'ai toujours un peu de mal avec ces fonctions qui s'interrompent,
reprennent en plein milieu...
A utiliser en cas de nécessiter seulement.

et description sur python.org :
"Stackless Python is a fork of CPython, but not one that diverges very
far from the main tree. Christian Tismer rewrote the main interpreter
loop of CPython to minimize its use of the C stack; in particular,
calling a Python function in Stackless Python doesn't occupy any more
room on the C stack. This means that, while CPython can only recurse a
few thousand levels deep before filling up the C stack and crashing,
Stackless can recurse to an unlimited depth. Stackless is also
significantly faster than CPython (around 10%), supports continuations
and lightweight threads, and has found a community of highly skilled
users who use it to do things such as writing massively-multiplayer
online games. The Stackless Python home page is at
http://www.stackless.com."

Séduisant non ?



Avatar
Amaury Forgeot d'Arc
Re !

microthreads


Lorsque je m'y étais intéressé, les micro-threads n'étaient pas
implémentés (c'était une promesse pour la version suivante).


Heu, c'était il y a longtemps ? La page correspondante sur le wiki date
de 2005. http://www.stackless.com/wiki/Tasklets

J'ai l'impression que Stackless est vivant en ce moment.


Mais, les versions sortent au moins 18 mois de retard sur les versions
Python.


En plus, l'auteur principal a émigré vers le projet PyPy, qui permet
d'implémenter la fonction stackless de manière transversale, et sans
avoir à modifier tout le code de l'interpréteur (enfin si, mais c'est du
code généré).

Ceci dit, quand on a vraiment besoin des avantages de Stackless, le fait
d'avoir un python plus-que-stable n'est pas à dédaigner.


--
Amaury Forgeot d'Arc


Avatar
Amaury Forgeot d'Arc

J'ai l'impression que Stackless est vivant en ce moment.


Mais, les versions sortent au moins 18 mois de retard sur les versions
Python.


La version 2.5.1 est quand même là...

--
Amaury


Avatar
BertrandB
Bonsoir,



Bonjour

Moi, j'ai toujours un peu de mal avec ces fonctions qui s'interrompent,
reprennent en plein milieu...
A utiliser en cas de nécessiter seulement.


Dans mon cas je ne pense pas utiliser ces fonctionalités, dont je ne
pourrai vous en donenr des nouveles.
Pour l'instant je veux juste faire fonctionner edna (sans le bug
étrange) sur le DSM/G600 (PPC 32Mo de Ram Kernel 2.4.21 uclibc qui
date). Et par là donner un langage un peu sérieux, pour l'instant seul
php et microperl a été Xcompilé avec succès.

Je vous tiendrai au courant.

Avatar
Méta-MCI \(MVP\)
Bonjour !

Heu, c'était il y a longtemps ? La page correspondante sur le wiki date de 2005


ça correspond (à l'époque où j'avais regardé, seule la version pour Python 2.3 était dispo, alors
que j'étais en P-2.4)


La version 2.5.1 est quand même là...


Oui, mais en 2007, alors que c'est la 1ère version pour Python 2.5.x, qui est sorti... depuis quand
déjà ?



De toutes façons, comme tu dis : "en cas de nécessité seulement" ; vu que le Python "standard" est
quand même pas mal.



@-salutations

Michel Claveau

Avatar
BertrandB

En plus, l'auteur principal a émigré vers le projet PyPy, qui permet
d'implémenter la fonction stackless de manière transversale, et sans
avoir à modifier tout le code de l'interpréteur (enfin si, mais c'est du
code généré).


j'ai été jeter n cup d'oeuil mais :
- le nom ne fait vraiment pas sérieux
- ce n'est pas encore full compatible contrairemnet à stackless qui se
réclame full compatible
- j'ai eu peur quand j'ai lu le processus de génération de
l'interpréteur. Je n'ose imaginer une cross-génération

j'en ai conclus que stackless était un meilleur candidat pour de
l'embarqué, on verra bien.

1 2