IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

compiler un programme Python pour accélérer son exécution


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 415
    Par défaut compiler un programme Python pour accélérer son exécution
    salut à tous
    j'apprend Python
    je viens de programmer à titre d'exo l'ensemble fractal de Mandelbrot
    si j'augmente le nombre de pixels à calculer ça devient vite très lent
    comment compiler un programme ?
    sur wikipedia je lis ceci :
    Des outils comme PyInstaller24 ou d'autres plus spécifiques comme cx_Freeze sous Unix, Windows et Mac OS X, py2app25 sous Mac OS X et py2exe sous Windows permettent de « compiler » un programme Python sous forme d'un exécutable comprenant le programme et un interpréteur Python.
    Le programme ne tourne pas plus rapidement (il n'est pas compilé sous forme de code machine) mais cela simplifie largement sa distribution, notamment sur des machines où l'interpréteur Python n'est pas installé.
    alors, un programme Python est-il vraiment compilable, avec gain de temps d'exécution, ou pas ?

    je suis sous mac os X, je travaille sous python3, j'édite mes programmes dans Xcode et je les exécute en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    python3 [pathduprogramme]
    dans le terminal

    Vinz

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    salut à tous

    alors, un programme Python est-il vraiment compilable, avec gain de temps d'exécution, ou pas ?

    Vinz
    Bonjour,

    Le langage Python est un langage interprété / semi-compilé en bytecode (les fichiers *.pyc) mais pas compilable simplement.

    Il existe des moyens détournés tels que Cython ( http://cython.org/ ) mais si vous débutez avec Python, cela risque de virer assez vite au bourbier (!)

    Si vous cherchez la performance, mieux vaut vous orienter d'emblée vers les langages C/C++ avec qqs libs graphiques en renfort e.g. GTK+, Qt5 : la mise en oeuvre est plus longue qu'avec Python mais vous programmerez à un plus bas niveau (plus proche du code machine, donc plus rapide).

    Python est un langage scientifique, mais personne n'a dit que langage scientifique rimait avec course à pied.

    @+.

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 415
    Par défaut
    ok merci
    je vais bientôt passer au C alors
    Vinz

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 688
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    alors, un programme Python est-il vraiment compilable, avec gain de temps d'exécution, ou pas ?
    Les outils mentionnés par Wikipédia ne permettent pas de "compiler" mais de "packager" une application Python sous la forme d'un exécutable. In fine, l'utilisateur pourra lancer un fichier exécutable comme s'il avait été construit avec un langage compilé comme C/C++.
    Dans la pratique, çà n'a d'intérêt que pour distribuer une application sans demander à l'utilisateur d'installer la bonne version de Python, et les autres bibliothèques dont elle dépend.

    Dans la plupart des cas, vous allez utiliser Python pour mettre en œuvre rapidement et facilement des bibliothèques systèmes comme Numpy (calcul) ou Qt (graphique). Ces bibliothèques là sont déjà compilées, et la partie Python n'est la que pour "organiser" le boulot qu'on leur demande de faire.

    Dans certains cas, vous allez écrire une application qui pourrait être optimisée en ré-écrivant certaines parties en C.
    Il faut déjà que l'application "tourne" et que son code soit assez "stable" pour regarder là ou vous perdez le plus de temps et définir ce qui pourrait être amélioré. Ce sont ces parties là qu'il faudra "optimiser".

    je viens de programmer à titre d'exo l'ensemble fractal de Mandelbrot
    si j'augmente le nombre de pixels à calculer ça devient vite très lent
    comment compiler un programme ?
    La complexité d'une fractale de Mandelbrot est en O(n²).
    En compilant vous risquez de bosser beaucoup pour un léger mieux.

    Ceci dit, apprendre le C est un bon investissement.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 415
    Par défaut
    ok
    oui, bien sûr, se mettre au C est incontournable
    pour revenir à ce que vous dites
    je n'ai pas mentionné, que dans l'élan de ma toute fraîche découverte de Python, le mieux que j'ai trouvé à faire c'est de bosser avec tkinter
    c'est sasn doute pas la bibliothèque graphique la plus efficace
    sans doute qu'avec Numpy je serai plus rapide ?
    sans doute suis je pour le moment freiné surtout non pas par python mais par tkinter ?
    question :
    vous parlez de qt
    la bibliothèque graphique "qt" est-elle donc manipulable à la fois par Python et par C ?
    est-ce facile à installer ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    ok
    oui, bien sûr, se mettre au C est incontournable
    pour revenir à ce que vous dites
    je n'ai pas mentionné, que dans l'élan de ma toute fraîche découverte de Python, le mieux que j'ai trouvé à faire c'est de bosser avec tkinter
    c'est sasn doute pas la bibliothèque graphique la plus efficace
    sans doute qu'avec Numpy je serai plus rapide ?
    sans doute suis je pour le moment freiné surtout non pas par python mais par tkinter ?
    question :
    vous parlez de qt
    la bibliothèque graphique "qt" est-elle donc manipulable à la fois par Python et par C ?
    est-ce facile à installer ?
    Qt5 est conçue pour C++ : http://qt-project.org/doc/

    La version pour Python : PyQt / PySide http://qt-project.org/wiki/PySideDocumentation

    @+.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 688
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    oui, bien sûr, se mettre au C est incontournable
    Je dirais "était". Un langage comme Python vous permet quand même de faire des trucs sympas sans trop vous prendre le chou.
    Faut-il apprendre C? Ça reste un langage majeur pour les programmeurs systèmes.

    Quel type d'applications allez vous coder?
    Quels sont les frameworks, bibliothèques, langages à maîtriser pour faire transformer rapidement des idées en une application qui tourne?
    Avec un langage comme le C, on économise la ressource CPU/mémoire/électricité et çà va plus vite. Pour sortir l'appli. qui marche, ce sera plus tard.
    (Un langage comme) Python vous permet de sortir le truc plus vite. Et des tas de bibliothèques existent pour ne pas trop consommer la ressource CPU/mémoire/électricité.
    Les grosses applications sont écrites en plusieurs langages. Il faut choisir le plus adapté pour écrire des ensembles de fonctionnalités. La monoculture n'est pas bonne ici non plus.
    Mais si vous tenez à faire de la programmation système, C, Java, C# sont des passages obligés.

    pour revenir à ce que vous dites je n'ai pas mentionné, que dans l'élan de ma toute fraîche découverte de Python, le mieux que j'ai trouvé à faire c'est de bosser avec tkinter
    c'est sasn doute pas la bibliothèque graphique la plus efficace
    sans doute qu'avec Numpy je serai plus rapide ?
    sans doute suis je pour le moment freiné surtout non pas par python mais par tkinter ?
    tkinter est aujourd'hui la seule librairie graphique livrée en standard. Son premier avantage est d'être utilisable après avoir installé Python (à partir du package livré en standard pour votre OS. Compilé Python à partir du tarball ne suffit pas pour faire fonctionner tkinter).

    tkinter s'appuie sur TCL/Tk. TCL est un langage de scripting comme Perl,...
    Widgets et méthodes de TCL/Tk sont adaptés aux attentes d'un programmeur en langage "script" - les développeurs RAD -.
    Par héritage, tkinter n'est pas si mal adapté aux développeurs d'application RAD en Python.
    Mieux, sans trop connaître la POO vous pourrez faire de petites applications sympa: pas mal aussi pour "débuter".

    De plus, une librairie graphique est écrite avec un langage système: la plupart du code exécuté "sous" tkinter est écrit en C.
    Le seul boulot de "tkinter" est de vous permettre d'utiliser le GUI depuis Python.
    C'est pareil côté Qt.

    Le soucis n'est pas côté performances mais côté fonctionnalités.
    Une des hantises du programmeur est "apprendre, c'est du temps et de l'argent". Est-ce que j'aurais plus de clients en écrivant Qt sur mon CV plutôt que tkinter? Est-ce que j'ai plus de chance de trouver la fonctionnalité dont j'aurais peut être besoin demain dans Qt ou dans tkinter?
    Ce sont des sujets importants.
    Mais nous ne parlons plus de facilité d'utilisation, ni de performance... mais de coût d'opportunité et de rentabilité d'un investissement.

    question :
    vous parlez de qt
    la bibliothèque graphique "qt" est-elle donc manipulable à la fois par Python et par C ?
    est-ce facile à installer ?
    Qt est utilisable à partir de Python, Ruby, Perl, Java,... et C++
    Si vous utilisez les packages installables sur votre OS, çà se fait en suivant le manuel d'installation adapté à votre cas.
    En cas de problèmes, racontez ce qu'il vous arrive dans le forum. On essaiera de vous donner 2/3 idées.

    Avec des tas de trucs à apprendre, le plus difficile est d'éviter de se disperser. D'avancer par étapes et d'essayer de réutiliser ce qu'on a appris pour avancer: "consolider", "capitaliser",...
    Si vous débutez vous ne savez pas encore trop ce que peut être une interface graphique.
    Les bases acquises avec Tk sont fondamentales.
    Un widget Text, un Label, un Button,... event-loop, callbacks, ... Les trucs importants sont les mêmes partout.
    Démarrer Qt avec un minimum de savoir acquis sur les GUI avec tkinter permet de mettre des marches.
    Si vous partez sur Qt tout de suite, il faudra avoir des notions de POO et de C++ en plus de savoir ce que vous attendez d'un GUI...
    A vous de voir, c'est vous qui allez devoir vous jeter à l'eau et nager.

    Reposez-vous la question (jouer avec Qt) dans quelques semaines?

    Bon courage,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 415
    Par défaut
    merci de vos réponses
    mes buts sont de programmer des maths, des maths, des maths, des fractales, des animations 2d reposant sur des équations dans tous les sens (je suis matheux)… je m'initie aussi dans le même temps à Blender pour faire de la 3d et j'ai vu que python peut travailler avec blender, d'où une autre motivation pour apprendre python
    je vois un peu comment fonctionne tkinter, j'ai compris le principe pour créer des boutons, des textes, des trucs divers, reste à pratiquer
    une autre motivation pour me lancer dans Qt est que cela est utilisé dans le logiciel TeXmacs (www.texmacs.org) dans lequel je suis impliqué, pour le moment à titre d'enseignant - si un jour je peux rentrer dans le code j'en serai ravi
    enfin, un de mes buts est de faire des animations graphiques mathématiques avec Lisp ou autre langage fonctionnel
    mais histoire de commencer par le commencement, je me suis penché d'abord sur Python
    donc, dans l'ordre, python, C, lisp
    je mesure bien qu'il faudra minimum un an ou deux pour commencer à cerner un peu les trucs, et je me donne ce temps là

    pour revenir à nos moutons, sur la page http://qt-project.org/wiki/PySideDocumentation, on me dit que cela (pyside ou pyqt, lequel choisir ?) ne fonctionne qu'avec python2
    histoire d'éclaircir les choses, tout ce que j'ai fait à présent, je l'ai fait sous python3
    dois je revenir à python2 ? c'est pas non plus la fin du monde

    y a til dans qt un système de gestion des couleurs hsv ? car sous tkinter j'ai dû le programmer moi même, c'est toujours intéressant mais plus il y a d'outils mieux c'est

    où trouver une liste expliquée aevc les mains, des modules existants et pouvant fonctionner avec python ? je cerne tkinter, turtle, je vais me pencher sur pyside/pyqt, j'ai installé sans encore m'en servir numpy, si qqn a fait un site qui parle de tout cet univers de modules pour matheux, je suis preneur

    Vincent

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 688
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    pour revenir à nos moutons, sur la page http://qt-project.org/wiki/PySideDocumentation, on me dit que cela (pyside ou pyqt, lequel choisir ?) ne fonctionne qu'avec python2
    histoire d'éclaircir les choses, tout ce que j'ai fait à présent, je l'ai fait sous python3
    dois je revenir à python2 ? c'est pas non plus la fin du monde
    PyQt et PySide fonctionnent sous Python3.
    Après installer sous OSX est plus galère que sur Linux ou Windows.
    Aller chercher des infos dans ce forum, vous y trouverez des réponses aux autres questions.

    y a til dans qt un système de gestion des couleurs hsv ? car sous tkinter j'ai dû le programmer moi même, c'est toujours intéressant mais plus il y a d'outils mieux c'est
    Ca n'a pas du être si compliqué d'autant que qu'il suffit de récupérer les codes en tappant quelques mots clés sous Google.
    Bien sûr Qt4 sait le faire tout seul, mais il faut lire la documentation

    où trouver une liste expliquée aevc les mains, des modules existants et pouvant fonctionner avec python ? je cerne tkinter, turtle, je vais me pencher sur pyside/pyqt, j'ai installé sans encore m'en servir numpy, si qqn a fait un site qui parle de tout cet univers de modules pour matheux, je suis preneu
    Les matheux utilisent plutôt des distributions genre EPD ou Python(x,y).
    C'est Python + de nombreux packages intéressants que vous installez d'un coup.
    Après il y a pleins de bibliothèques intéressantes mais personne ne pourra choisir a votre place

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Compiler un programme Gnat pour MSDOS
    Par Invité dans le forum Ada
    Réponses: 2
    Dernier message: 07/05/2014, 21h00
  2. Réponses: 0
    Dernier message: 08/03/2010, 15h27
  3. Compilation de programme C pour armv5tejl sous GCC
    Par joprog dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 22/11/2009, 14h46
  4. Réponses: 1
    Dernier message: 04/06/2008, 20h13
  5. Compiler un programme perl pour palteforme Win32
    Par LE NEINDRE dans le forum Modules
    Réponses: 1
    Dernier message: 11/01/2006, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo