Partage
  • Partager sur Facebook
  • Partager sur Twitter

utiliser plus de memoire

Sujet résolu
    7 avril 2015 à 20:57:22

    Bonjour, dans mon programme en python je dois analyser des données contenue dans des fichiers binaires.

    Pour y arriver, j'ai transformer 1 fichier en 1 objet, ces fichiers contiennes des données précise a un temps particulier. (1 fichier contient des données d'une heure)

    Quand on utilise mon programme pour 3 semaine max sa vas très bien, au delà la mémoire du pc (4go sous windows7 pro 64bits) est presque pleine et la création d'objet devient très lente d'un seul coup (quand 3.75 de la ram est pleine).

    Ma question est serait t'il possible de ne pas stocker ces objet dans la ram directement mais dans une sorte de mémoire virtuel, stocker sur le disque dur directement ?

    1) J'ai besoin de crée tous ce objets, car il sont tous exploiter des que l'utilisateur change un paramètre ou une variable.

    2) J'ai essayer de mettre toutes les données dans un "super objet" plutôt que des 100aine, le gain et minime, donc inutile.

    Peut on crée un fichier de swap en python ?

    -
    Edité par mathema 7 avril 2015 à 21:01:37

    • Partager sur Facebook
    • Partager sur Twitter
      7 avril 2015 à 23:42:57

      Tu peux utiliser le module pickle pour serialiser (donc sauvegarder et charger) des objets Python dans des fichiers en un clin d'oeil.

      Après, puisqu'on ne sait pas vraiment ce que fait ton code c'est difficile de t'aider au doigt mouillé. Ne peux tu pas envisager l'utilisation d'une base données, par exemple avec sqlite ?

      -
      Edité par nohar 7 avril 2015 à 23:43:45

      • Partager sur Facebook
      • Partager sur Twitter
      Zeste de Savoir, le site qui en a dans le citron !
        8 avril 2015 à 8:11:33

        L'utilisation d'une BDD nécessiterais de tout refaire le code existant, donc non.

        De toute façon les données de ces fichiers sont variable, il peut y en avoir 27 comme 250.

        Ce programme exploites les données de fichiers compilé, puis doit en faire des graphiques.

        Pour pickle, c'est exactement ce que je recherche.

        Mais je pense utiliser cpickle, qui est plus performant.

        Peut on mettre plusieurs objet dans 1 seul fichier ?

        pickle.dump(myobject, file('file.tmp','w'))

        C'est surtout pour le dépickler que sa risque de poser problème non ? ou bien on peut crée une sorte de liste ou de tableau dans le fichier ?

        • Partager sur Facebook
        • Partager sur Twitter
          8 avril 2015 à 9:02:03

          Mais je pense utiliser cpickle, qui est plus performant.

          Attention avec ce genre d'affirmations. Même si dans ce cas précis ça ne coûte rien d'importer cPickle au mieu de pickle, les considérations a priori sur les performances n'ont en général aucune valeur : vu les perfs de base de pickle (qui repose sur l'API native de CPython), je serais prêt à parier que la différence de perfs sera négligeable devant le reste de ton programme qui semble faire des milliers d'allocations/libérations dynamiques de mémoire.

          Peut on mettre plusieurs objet dans 1 seul fichier ?

          Tu ne peux pickler qu'un seul objet par fichier, mais rien n'interdit cet objet d'être une liste ou un tuple d'objets.

          -
          Edité par nohar 8 avril 2015 à 9:02:32

          • Partager sur Facebook
          • Partager sur Twitter
          Zeste de Savoir, le site qui en a dans le citron !
            8 avril 2015 à 9:40:06

            "Tu ne peux pickler qu'un seul objet par fichier, mais rien n'interdit cet objet d'être une liste ou un tuple d'objets."

            Oui j'y ai penser, mais il n'y a aucun intérêt, avoir 100 petit fichier me parait mieu vue le code xistant.

            Merci pour ton aide.

            • Partager sur Facebook
            • Partager sur Twitter

            utiliser plus de memoire

            × 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