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 :

memoire, variable et erreur de segmentation


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut memoire, variable et erreur de segmentation
    Bonjour à tous.

    Voila, j'utilise ipython, et python 2.6.4 sous Ubuntu 9.10.
    Je fais tourner un script (Biosig) qui permet de charger et afficher des signaux d'Electro Encepahalo Gram, et j'ai plusieurs problèmes.

    1) Tout d'abord, je ne peut pas charger la totalité des données sinon, j'ai une erreur de mémoire de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MemoryError: Could not allocate memory for path
    Est il possible de lancer ipython en lui allouant plus de mémoire que par défaut (comme cela est faisable avec eclipse par exemple) ?
    Au passage, lors de ce bug, le script ne s'arrête pas, et ne reconnais pas le ctrl+c, du coup je suis obliger de sortir de ipython

    2) Ensuite, j'ai un autre bug, si je lance 2 fois de suite mon script ("run testBiosig.py") avec un nombre de données qu'il est capable d'afficher, au deuxième coup, j'ai une erreur de segmentation (sans plus d'explication mais peut etre un lien avec mon 3).

    3) une fois que mon script est fini d'exécuter, les variables créées sont encore en mémoire (vu avec la commande who), donc j'ai rajouté dans mon script à la fin un del de toute les variables (ce qui ne règle pas le problème 2).
    Mais je voulais savoir si il existe une commande pour supprimer manuellement toute les variable d'un coup genre un "del all"...

    Merci beaucoup !

    PS : même si l'utilisation de ce script est du calcul scientifique, je pense que mes problèmes rentrent dans le cadre général d'où mon post dans cette section du forum.
    Cependant, si les modérateurs estime qu'il n'y a pas sa place, je comprendrais.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 828
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par simastion Voir le message
    Voila, j'utilise ipython, et python 2.6.4 sous Ubuntu 9.10.
    Je fais tourner un script (Biosig) qui permet de charger et afficher des signaux d'Electro Encepahalo Gram, et j'ai plusieurs problèmes.

    1) Tout d'abord, je ne peut pas charger la totalité des données sinon, j'ai une erreur de mémoire de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MemoryError: Could not allocate memory for path
    Est il possible de lancer ipython en lui allouant plus de mémoire que par défaut (comme cela est faisable avec eclipse par exemple) ?
    Au passage, lors de ce bug, le script ne s'arrête pas, et ne reconnais pas le ctrl+c, du coup je suis obliger de sortir de ipython
    Ben tu sais, Python comme tout langage a ses limites (qui dépendent surtout de ta config). Ma dernière appli gérait à un moment donné 20000 info et chacune d'elle générait des fils de recoupement pour pouvoir retrouver les infos selon certains critères (une sorte d'index en quelque sorte). Ca marchait mais ça en devenait hyper long (le temps de calcul se comptait en minutes).
    J'ai tout déporté dans des tables temporaires sous une bdd Postgres avec des index associés. Le temps de calcul est descendu à 15 sec. Quand ça peut plus, ça peut plus !!!


    Citation Envoyé par simastion Voir le message
    2) Ensuite, j'ai un autre bug, si je lance 2 fois de suite mon script ("run testBiosig.py") avec un nombre de données qu'il est capable d'afficher, au deuxième coup, j'ai une erreur de segmentation (sans plus d'explication mais peut etre un lien avec mon 3).
    Ou avec le 1

    Citation Envoyé par simastion Voir le message
    3) une fois que mon script est fini d'exécuter, les variables créées sont encore en mémoire (vu avec la commande who), donc j'ai rajouté dans mon script à la fin un del de toute les variables (ce qui ne règle pas le problème 2).
    Mais je voulais savoir si il existe une commande pour supprimer manuellement toute les variable d'un coup genre un "del all"...
    Incompréhensible. Déjà la commande "who" ne donne pas l'état de la mémoire mais la liste des utilisateurs connectés. De plus, quand un processus se termine, la mémoire associée au processus est totalement libérée.
    De plus, faire un del d'une variable n'apporte rien si la variable est encore référencée. Mais pour répondre à ta question, il n'existe pas de "delall" car c'est théoriquement inutile. Tu peux toutefois demander au garbage collector (module "gc") de travailler plus souvent que ce qui est prévu à l'origine.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    Merci des reponses.

    Dans 3 jours je recois un nouvel ordi, ce qui devrait resoudre pas mal de probleme, si tout est lié a la memoire. Je vous tiendrais au courant.

    Pour mon 3), la commande %who (j'ai oublié le pourcent ce qui a pu créer une ambiguité effectivement) est une commande "magique" de ipython qui liste les variables en mémoire pour la session courante et les variables et objets persistants.
    Mais ca, a mon avis, ca veut juste dire que le script de biosig ne les libere pas a la fin de son execution, ce que j'ai corrigé

    Pour le 2, je comprend pas pourquoi si il arrive a le lancer (et finir correctement) 1 fois, en vidant les variables en mémoire, il n'y arrive pas une deuxieme fois...
    Et pourquoi il m'avertirait avec une erreur de segmentation et pas avec l'alerte du cas 1) ?

Discussions similaires

  1. Erreurs de segmentation !
    Par anti-conformiste dans le forum Applications et environnements graphiques
    Réponses: 16
    Dernier message: 18/10/2005, 11h11
  2. Erreur de segmentation
    Par Trunks dans le forum C
    Réponses: 3
    Dernier message: 06/10/2005, 18h28
  3. Erreur de segmentation (Inconnue)
    Par Dark-Meteor dans le forum C
    Réponses: 5
    Dernier message: 08/09/2005, 13h42
  4. [Dev-C++] Erreur de segmentation...
    Par sas dans le forum Dev-C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h25
  5. erreur de segmentation
    Par transistor49 dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2005, 11h18

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