OVH Cloud OVH Cloud

Utiliser Stackless

6 réponses
Avatar
elendil
Bonjour,

j'ai trouvé un article intéressant sur les micro-threads qui correspond
exactement à ce que j'ai besoin :
http://harkal.sylphis3d.com/2005/08/10/multithreaded-game-scripting-with-stackless-python/

Seul problème, l'auteur n'explique pas vraiment comment utiliser
Stackless et la documentation est assez pauvre... J'ai regardé
rapidement l'aide en tapant help(stackless) mais forcément il n'y a pas
d'exemples. J'ai aussi cherché sur le site de Stackless et avec google
mais je n'ai trouvé grand chose.

Si quelqu'un sait où trouver de la documentation ou a un code source
documenté je suis preneur :)
Ou peut-être il existe une autre manière d'avoir un mécanisme identique
avec le Python "standard" ?

Merci.

6 réponses

Avatar
Do Re Mi chel La Si Do
Bonsoir !


Je ne suis pas sûr que Python-Stackless bouge encore beaucoup. Je n'ai plus
vu de nouvelles version, au delà de Python 2.3...
En plus, certaines personnes prétendent ne pas vraiment comprendre comment
fonctionne Stackless.

Et pourtant, la possibilité de micro-threads serait intéressante. Pour
contourner les limitations des threads, ou pour des logiciels comme
Candygram (http://candygram.sourceforge.net/)

A noter que Candygram est limité à quelques dizaines de threads, alors que,
avec Erlang (son modèle), on raisonne en dizaine de milliers de threads.


Si tu trouves des trucs intéressants, fais-nous en part. Merci d'avance.


@-salutations

Michel Claveau
Avatar
Do Re Mi chel La Si Do
Re


J'ai repensé à un truc : http://starship.python.net/crew/gandalf/PyErlang/
Et aussi, ce site : http://csmctmto.interpoint.net/didx/python_erlang.html
qui, malheureusement, ne fonctionne que de temps en temps...

En théorie, Python doit pouvoir appeler des noeuds Erlang, et utiliser des
fonctions Erlang. Donc, accéder aux hiérarchies de threads, et à toute la
riche mécanique d'Erlang, dans ce domaine.

Mais je n'ai même pas décompressé les fichiers...


@-salutations

Michel Claveau
Avatar
kaerbuhez
Pour info,

Une "recette" qui fait du multi-threading sans threads:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/162764

... et une version améliorée dans le cookbook de O'Reilly:
http://safari.oreilly.com/?XmlId96007973/pythoncook2-CHP-9-SECT-8
Avatar
elendil
Merci pour vos réponses.

J'avais remarqué que Stackless n'avançait plus beaucoup, apparemment
Christian Tismer n'a plus beaucoup de temps à y consacrer.

Je vais aller voir du côté des generators, j'ai l'impression qu'il y a
aussi plus de documentations.

J'ai aussi trouvé un article en anglais sur les "weightless threads"
(qui utilisent les generators) pour ceux qui sont intéressés :
http://www-128.ibm.com/developerworks/linux/library/l-pythrd.html?t=egrL25,p=WeightlessThreads
Avatar
Bruno Desthuilliers
Merci pour vos réponses.

J'avais remarqué que Stackless n'avançait plus beaucoup, apparemment
Christian Tismer n'a plus beaucoup de temps à y consacrer.

Je vais aller voir du côté des generators, j'ai l'impression qu'il y a
aussi plus de documentations.

J'ai aussi trouvé un article en anglais sur les "weightless threads"
(qui utilisent les generators) pour ceux qui sont intéressés :
http://www-128.ibm.com/developerworks/linux/library/l-pythrd.html?t=egrL25,p=WeightlessThreads



Si ça peut t'intéresser:
http://codespeak.net/py/current/doc/greenlet.html

Avatar
Laurent Pointal
Do Re Mi chel La Si Do wrote:

Re


J'ai repensé à un truc :
http://starship.python.net/crew/gandalf/PyErlang/ Et aussi, ce site :
http://csmctmto.interpoint.net/didx/python_erlang.html qui,
malheureusement, ne fonctionne que de temps en temps...

En théorie, Python doit pouvoir appeler des noeuds Erlang, et utiliser des
fonctions Erlang. Donc, accéder aux hiérarchies de threads, et à toute la
riche mécanique d'Erlang, dans ce domaine.


Au cas où, en reparcourant mes bookmarks je suis tombé sur celui-ci:
http://candygram.sourceforge.net/

En patois dans le texte:

Candygram is a Python implementation of Erlang concurrency primitives.
Erlang is widely respected for its elegant built-in facilities for
concurrent programming. This package attempts to emulate those facilities
as closely as possible in Python. With Candygram, developers can send and
receive messages between threads using semantics nearly identical to those
in the Erlang language.

A+

Laurent.