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 :

Règles d'optimisation Python


Sujet :

Python

  1. #1
    Membre habitué Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Points : 125
    Points
    125
    Par défaut Règles d'optimisation Python
    Bonjour à tous,

    Je développe en Python depuis quelques mois à mes heures perdues. J'ai fait un programme qui commence à faire quelques milliers de lignes de codes mais maintenant, je me pose quelques questions sur les capacités d'optimisation de ce langage.

    De ce fait , ma question serait assez ouverte et compterait plus sur vos expériences et votre maitrise générale du langage Python...

    Quelles seraient, d'après vous, les petits trucs et astuces propres à Python permettant d'optimiser un code ? Quelles seraient les choses à éviter ?
    Quand je parle d'optimisation, c'est au sens large aussi bien niveau mémoire que temps d'exécution (surtout temps d'exécution d'ailleurs).

    Je tiens à préciser que je ne suis pas un expert en informatique non plus..

    Merci d'avance

  2. #2
    Membre régulier Avatar de Lujeni
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 52
    Points : 82
    Points
    82
    Par défaut
    J'ai fait un programme qui commence à faire quelques milliers de lignes de codes
    En python ça commence a être un gros projet.
    La gestion de la mémoire est géré par le "ramasse miette" de python.

    Ta question reste très vaste, et dans l'idéal il faudrait que tu arrives à identifier les parties de ton code que tu trouves lentes en temps d'exécution et réfléchir à la manière de procéder. Précise aussi le domaine de ton programme.

    Ton temps d'exécution va énormément dépendre de la qualité de ton code, tu peux très bien coder ton programme en C et avoir un code plus rapide en python .

    Coté optimisation, il y a des chose comme l'utilisation de liste de comprehension, importer le stricte nécessaire dans tes modules, utilisation d'un cache...

    Tu peux aussi regarder PyLint qui permet de noter ton code.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    Citation Envoyé par memento80 Voir le message
    J'ai fait un programme qui commence à faire quelques milliers de lignes de codes ...
    et il fait quoi ce gros programme ?


    factorisation ...

  4. #4
    Membre habitué Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Points : 125
    Points
    125
    Par défaut
    Merci déjà pour ces quelques pistes.

    et il fait quoi ce gros programme ?
    Bah c'est un moteur de jeu... avec des paramètres en entrée et un résultat en sortie

    Pour préciser, pour l'instant, je n'ai pas l'impression d'avoir des requêtes particulièrement très longues mais comme je suis autodidacte et avec le début de petite expérience que j'ai vis à vis des problèmes rencontrés et des multiples façons différentes de les gérer en Python, je commence à me poser des questions du genre "tiens, peut-être que si j'avais fait comme ça, ça aurait été plus rapide".
    Alors certes, souvent c'est à cause de l'algorithme et donc là, ce n'est plus un problème propre à Python mais dès fois je me pose la question par rapport aux possibilités que propose Python pour améliorer les temps d'exécution.

    Voilà, donc comme je n'ai pas fini mon moteur de jeu, que les extensions sont quasi infini et qu'il commence déjà à tourner plusieurs minutes, il vaut mieux peut-être que je commence à me poser les questions de méthodologie d'un point de vue optimisation avant qu'il ne soit trop tard...

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    le wiki de python.org a déjà une collection de "bonnes pratiques" et de pointeurs vers les différents outils à utiliser côté "performances". voir PythonSpeed et PerformanceTips

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

  6. #6
    Membre habitué Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Points : 125
    Points
    125
    Par défaut
    Merci pour les liens.
    Il me reste qu'à éplucher tout ça.

    Je ne sais pas si vous avez déjà eu des expériences personnelles de méthodes ou d'outils qui vous ont permis d'optimiser sensiblement votre programme Python ? Le genre de truc qui vous ont fait dire : "tiens si j'avais su ça (cette astuce) avant...."

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Points : 224
    Points
    224
    Par défaut
    Hello,
    J'ajouterais aux bonnes pratiques d'optimisation citées plus haut, qu'une fois le code bien propre, il ne faut pas hésiter à créer un module C pour certaines parties gourmandes en calculs.
    Un outil comme Cython aide bien dans ces cas là.
    http://cython.org/

  8. #8
    Membre éclairé
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Points : 752
    Points
    752
    Par défaut
    si tu manipules des tableaux de nombres ou fait du calculs sur des tableaux, au lieu d'utiliser des listes, tu peux aussi songer à des modules spécialisés comme numpy/scipy qui peuvent grandement accélérer le traitement numérique.

  9. #9
    Membre habitué Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Points : 125
    Points
    125
    Par défaut
    Merci à tous pour vos différentes suggestions.
    Ca me laisse pas mal de pistes si je rencontre un point particulièrement gourmand dans mon programme.

    A+
    (Je classe en résolu mais n'hésitez pas à poster si vous avez des ajouts ou des précisions pertinentes... pour moi ou pour les prochains qui comme moi chercheront ce genre de post)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Procédure d'optimisation Python
    Par thomas.rig dans le forum Calcul scientifique
    Réponses: 8
    Dernier message: 28/10/2013, 15h38
  2. [Python 2.7] Parseur XML et classes : optimisation
    Par darkrojo dans le forum Général Python
    Réponses: 0
    Dernier message: 25/05/2011, 21h56
  3. [POO Optimisation] Règles d'écriture d'un site PHP
    Par KiLVaiDeN dans le forum Langage
    Réponses: 19
    Dernier message: 30/09/2006, 01h08

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