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.
Image may be NSFW.
Clik here to view.
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.