Comme vous le savez peut-être, je participe beaucoup à un framework (boîte à outil applicative) de programmation en flux appellé PyF.
Nous venons de sortir la version 2.0, et j’ai pensé que ce serait une bonne occasion de le présenter ici (j’ai utilisé le très bon article de Mathieu comme base pour cette présentation).
PyF est un framework Python permettant d’écrire des application de traitement, analyse et modification de données de façon très légère et pouvant gérer de très gros volumes simplement. PyF est un logiciel libre et gratuit sous licence MIT.
PyF est bâti autour du concept de programmation en flux:
À la place de traiter « une certaine quantité de données » tout à la fois, on traite un flux de données de façon à n’avoir qu’un seul objet en mémoire qui passe à travers toutes les étapes du graphe, puis on passe à la suivante. Par exemple, traiter toute votre énorme base de clients et générer des rapports ne va pas mettre votre serveur à genoux, mais au contraire paraîtra une tâche tout à fait anodine.
Pour arriver à la programmation en flux, PyF utilise les générateurs Python (sans avoir besoin d’extensions de python comme stackless pour ceux qui connaissent):
Chaque étape de la chaine de traitement prend un générateur en entrée et renvoie les items dès qu’il les a traités (ou un objet tous les n items, ou en rendant simplement la main pour envoyer un rapport d’aggregat à la fin sans troubler les autres branches). PyF peut même gérer un flux de données ininterrompu, en continuant à traiter les données dès qu’elles arrivent, en les renvoyant dans la foulée.
Pour entrer dans les détails, PyF est composé de plusieurs couches :
- Dans les niveaux les plus bas, vous trouverez des fonctionnalités qui vous aideront à écrire des applications utilisant la programmation en flux
- Au niveau intermédiaire, vous pouvez lancer des process dans votre application en utilisant tout l’écosystème de plugins (ou écrire les votres)
- Au plus haut niveau vous trouverez en revanche une application web complète qui vous permettra de concevoir graphiquement vos chaines de traitement (nous les appelons les tubes) en insérant et liant les composants de traitement par simple glisser-déposer. Nous proposons plusieurs composants génériques qui peuvent être utilisés pour faire toutes sortes d’extraction, traitements, sorties et rapports et vous pouvez créer les votres très simplement (ou les prototyper en codant directement dans l’interface graphique avec un IDE intégré). Il y a même un scheduler avec lequel vous pouvez planifier le lancement de tâches.
Nous avons écrit un tutoriel pour l’installation de PyF, et une série de tutoriels pour faire vos premiers pas. (en anglais pour l’instant, mais si vous voulez aider à la traduction vous êtes les bienvenus !)
Il y a déjà de la documentation qui devrait être plus que suffisante pour commencer, même si nous travaillons actuellement à la rendre plus complète.
À propos des changements dans la version 2.0, un des plus importants est l’ajout du multiprocessing: vous pouvez envoyer les composants de votre choix dans des process séparés (pour utiliser tous les processeurs de votre machine) avec une simple case à cocher dans le designer.
Si vous avez une quelquonque question, vennez sur notre mailing-list ou notre salon irc:
- http://groups.google.com/group/pyf-users
- #pyf sur Freenode
Oh et bien sûr n’oubliez pas de visiter le site internet http://pyfproject.org/ et d’aller voir les captures d’écran du designer et de l’interface web.

par Issa
31 Déc 2010 à 13:25
Bonjour,
j’essai d’installer ce logiciel sur ma ubuntu 10.10, mais je ny arrive pas.
j’ai ce message d’erreur :
Issa@Issa-POWERMATE-ML250:~$ sudo easy_install « pyf[fullstack]>=2.0 »
install_dir /usr/local/lib/python2.6/dist-packages/
Searching for pyf[fullstack]>=2.0
Best match: pyf 2.0
Processing pyf-2.0-py2.6.egg
pyf 2.0 is already the active version in easy-install.pth
Using /usr/local/lib/python2.6/dist-packages/pyf-2.0-py2.6.egg
Processing dependencies for pyf[fullstack]>=2.0
Searching for lxml>=2.2
Reading http://pypi.python.org/simple/lxml/
Reading http://codespeak.net/lxml
Best match: lxml 2.3beta1
Downloading http://pypi.python.org/packages/source/l/lxml/lxml-2.3beta1.tar.gz#md5=adfeff2bc9c68480075ac03b04a89dde
Processing lxml-2.3beta1.tar.gz
Running lxml-2.3beta1/setup.py -q bdist_egg –dist-dir /tmp/easy_install-e5jpLS/lxml-2.3beta1/egg-dist-tmp-57MDZb
Building lxml version 2.3.beta1.
NOTE: Trying to build without Cython, pre-generated ‘src/lxml/lxml.etree.c’ needs to be available.
Using build configuration of libxslt 1.1.26
Building against libxml2/libxslt in the following directory: /usr/lib
src/lxml/lxml.etree.c:4: fatal error: Python.h: Aucun fichier ou dossier de ce type
compilation terminated.
error: Setup script exited with error: command ‘gcc’ failed with exit status 1
qu’en pense tu stp ?
par admin
17 Jan 2011 à 18:12
@Issa Salut, sous ubuntu, installes python-dev, libxml2-dev et libxslt-dev (apt-get install python-dev libxml2-dev libxslt-dev) et réessaies.
par rccc
05 Juil 2011 à 21:11
Bonjour,
Pour info la réponse donnée çi dessus fonctionne effectivement, je viens d’avoir le même souci sur une Ubuntu 10.04 ( » command ‘gcc’ failed with exit status 1″) et c’est résolu.
L’installation fut un peu laborieuse mais je suis arrivé au bout, arf 🙂
par laure
17 Août 2011 à 21:29
Bonjour,
J’avais découvert en juillet la smooth gallery mais il semblerait que le lien ne fonctionne plus, c’est dommage car je n’ai pas eu le temps de télécharger le script… Est-ce qu’il sera remis bientôt?
Merci d’avance!