La programmation en flux, c'est facile avec PyF 2.0

Posté par  (site web personnel) . Modéré par patrick_g.
Étiquettes : aucune
18
17
déc.
2010
Python
PyF est un framework Python bâti autour du concept de programmation en flux permettant d'écrire des applications 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.

La version 2.0 vient de sortir et propose en particulier la conception visuelle de traitement de données et la gestion des architectures multiprocesseurs sans réécriture ou changements particuliers au code. À 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 processus dans votre application en utilisant tout l'écosystème de plugins (ou écrire les vôtres)
  • Au plus haut niveau, vous trouverez en revanche une application web complète qui vous permettra de concevoir graphiquement vos chaînes 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 vôtres 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.

Il y a 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 également 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 processus séparés (pour utiliser tous les processeurs de votre machine) avec une simple case à cocher dans le designer.

Si vous avez une quelconque question, venez sur la mailing-list ou le salon IRC :

Oh et bien sûr n'oubliez pas de visiter le site internet et d'aller voir les captures d'écran du designer et de l'interface web.

Aller plus loin

  • # ETL?

    Posté par  . Évalué à 8.

    Ce projet semble intéressant dans son approche du traitement de flux. Cependant, comment se situe-t-il par rapport aux ETL tels que Talend ou DataStage? Est-ce un complément pour du traitement peu complexe, ou un concurrent direct?

    Au niveau technique, il semble qu'il n'y ait pas de format de fichier intermédiaire (comme les datasets pour Datastage), comment alors découper un traitement en plusieurs sous traitement et réutiliser certaines données déjà traitées?
    Enfin en terme de volumétrie traité, y a-t-il un benchmark pour se faire une idée (par exemple, extraction d'une table de 10 millions de lignes ayant 20 colonnes).

    En tout cas je trouve ce projet intéressant et je vais essayer de le tester.
  • # PyF ?

    Posté par  (site web personnel) . Évalué à -1.

    PAF !!!
  • # Traitement de flux vidéo

    Posté par  . Évalué à 2.

    Ce que je trouverais vraiment génial, c'est que ce framework permette de traiter des flux vidéo à la manière d'avisynth [http://avisynth.org/mediawiki/Main_Page]. Pour l'instant il n'existe rien d'équivalent sous linux (à ma connaissance).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.