Partage
  • Partager sur Facebook
  • Partager sur Twitter

gestion variable / Mémoire

    19 septembre 2017 à 14:27:02

    bonjour

    petite question gestion des variables.

    Dans mon script principal python j'ai une fonction exple

    def toto():
        x =  []
        y = System.Array[Byte](x)
    
    etc....
    
    
    
    
    

    Dans mon programme principal je vais appeler plusieurs fois cette fonction,

    Au niveau mémoire du CPU, les variables x et y vont-elles être créées à chaque appel et détruites à chaque sortie de fonction ?

    ou bien va-t-il écraser à chaque fois la variable existante x et y ?

    Je sais pas si je suis clair ?

    Le but étant vu que j'appelle souvt cette fonction d'optimiser l'espace mémoire utilisée



    • Partager sur Facebook
    • Partager sur Twitter
      19 septembre 2017 à 14:46:46

      Bonjour,

      Python est très éloigné de la gestion manuelle de la mémoire. Et ce n'est probablement pas le langage à utiliser si tu veux quelque chose de très fin.

      Ici, les variables x et y seront recréées (puis détruites si elles ne sont pas retournées) à chaque appel de la fonction, oui. Mais avoir des variables d'un scope extérieur et en écraser la valeur reviendraient strictement au même.

      Par contre tu pourrais faire un sorte d'avoir un cache dans ta fonction, et de le réinitialiser manuellement quand cela est nécessaire.

      -
      Edité par entwanne 19 septembre 2017 à 14:47:21

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        19 septembre 2017 à 18:21:33

        À savoir que les variables locales sont plus performantes que les variables globales, il faut donc les privilégier, même si la performance n'est pas l'objectif, ça reste une bonne pratique (habitude).

        Ensuite as-tu une preuve que cette fonction est celle qui ralentit ton code ? As-tu fais des mesures de temps d'exécution ?

        Donc clairement ici, on ne peut pas répondre, il faudra l'ensemble de la fonction, avec tes tests, et à partir de là on aura une référence pour améliorer ce temps. À savoir que cela se fait une fois que tu es sûr que ton programme principal tourne. L'optimisation est la dernière étape lors du codage.

        • Partager sur Facebook
        • Partager sur Twitter
          20 septembre 2017 à 9:44:08

          merci pour vos réponses.

          oldprogramer , j'ai pas fais de test, mon programme n'est pas fini mais je me poser justement la question en programmant cette fonction.

          je n'ai pas besoin de ces fonctions en globale donc je vais les déclarer en locale.

          • Partager sur Facebook
          • Partager sur Twitter

          gestion variable / Mémoire

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown