• [^] # Re: Plus de classes

    Posté par (site web personnel) . En réponse au journal Pythran : C++ pour les serpents. Évalué à 1.

    Pour le moment, tu prends un module python, disons foo.py, tu l'annotes légèrement

    #pythran export ma_fonction(int list, float set, int:str dict)
    
    

    puis

    pythran -O3 -DNDEBUG -g foo.py -o foo.so
    
    

    et ensuite tu peux utiliser le module foocomme un module python normal, sauf que c'est le code natif qui s'execute

    from foo import ma_fonction
    # là c'est le code natif qui s'execute si foo.so est dans le path
    ma_fonction(range(10000), { 1./i for i in xrange(1,1000) }, { i, str(i) for i in range(10) })
    
    

    l'avantage c'est que même si pythran disparait de ton environnement, tu touches rien à ton code et il continue de fonctionner. Le seul changement, c'est d'isoler les parties calcul intensif dans un module, mais on pourrait presque dire que c'est pas une mauvaise pratique d'ingénierie :-)

    Remarque que rien n'empêche d'écrire un décorateur @pythran qui compile à la volée, mais le temps fuit sous mon clavier, et j'ai pas eu de demandes dans ce sens pour le moment.

    Si tu as un code à passer, on peut en discuter sur Freenode #pythran ou pythran@freelists.org :-)