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 :

Problème mémoire readlines


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 20
    Par défaut Problème mémoire readlines
    Bien le bonjour braves gens,

    Je travaille avec un fichier de 6 Go à parser. Comme je dois le parcourir plusieurs fois au cours de l'exécution du script et récupérer des lignes en amont ou en aval de ma regex, il était assez compliqué et rébarbatif d'ouvrir et fermer à chaque fois le fichier... Du coup, j'aimerais le mettre entièrement en mémoire ce qui me fera certes perdre du temps au début mais je serais gagnant à la fin !

    J'utilise un bon f.readlines() mais là j'ai un joli crash d'allocation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Python(92193) malloc: *** mmap(size=2097152) failed (error code=12)
    *** error: can't allocate region
    *** set a breakpoint in malloc_error_break to debug
    Jusque là rien d'anormal vous me direz... sauf que je dispose de 32 Go de RAM et que j'ai en continu 20 Go de mémoire disponible !!!
    Comment se fait-il que je ne puisses pas l'implémenter ? Est ce une sécurité au niveau de python pour limiter l'allocation ?...
    Bref avez vous une idée de l'origine de ce crash ?

    Merci pour votre aide,
    Picui

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par défaut
    Et t'as essayé un readline (sans le s) avec une boucle while?
    histoire de voir si ca marche, et si non, a quel moment ca plante?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    liste=[]
    while 1:
        line=f.readline()
        if line=='':
            break
        liste.append(line)
    l

    PS: Sympas les 32 Go de Ram...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 20
    Par défaut
    Ecoute je viens d'essayer le f.readline() mais j'ai toujours les mêmes problème et message d'erreur !

    Pour info, il plante avant d'atteindre la moitié du fichier.
    J'ai testé mon programme sur un cluster de calculs et là çà fonctionne nickel !

    Une idée ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par défaut
    Des idées...Oui j'en ai
    Est-ce qu'elle sont bonne, la c'est une autre question

    Je me dit que ca peut venir du faire qu'une liste est peut être limité en terme de nombre d'élément

    Je viens de trouver ca sur le net:

    According to the source code, the maximum size of a list is PY_SSIZE_T_MAX/sizeof(PyObject*).

    PY_SSIZE_T_MAX is defined in pyport.h to be ((size_t) -1)>>1

    On a regular 32bit system, this is (4294967295 / 2) / 4 or 536870912.

    Therefore the maximum size of a python list on a 32 bit system is 536,870,912 elements.

    As long as the number of elements you have is equal or below this, all list functions should operate correctly.
    Vu que tu travail avec des fichiers d'une taille assez conséquente, il faut voir combien d'élément tu as dans la dite liste...

    fais le afficher le numéro de la ligne pour savoir si c'est lié à ca

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,
    Questions bêtes...
    malloc: *** mmap(size=2097152)
    Sous quel environnement/OS?
    Est ce une version Python 64bits?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 20
    Par défaut
    Je suis sous Mac OS X 10.6 et python 2.6.6
    Il s'avère que j'ai une version 2.6.1 en 64 bits.
    Je l'avais mis à jour avec la version 2.6.6 mais apparemment il est installé en 64 bits.

    Y a t'il moyen de passer en 64 bits au niveau de ma version 2.6.6 ou il vaut mieux que j'utilise ma version 2.6.1 ??? Sachant que j'ai installé biopython après ma la mise à jour en 2.6.6 !

    Merci pour votre aide
    Picui

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

Discussions similaires

  1. Problème mémoire, c'est grave là :/
    Par gamerome dans le forum C++
    Réponses: 6
    Dernier message: 12/08/2005, 12h29
  2. [CR9] [VB.NET] problème mémoire
    Par prophetky dans le forum SDK
    Réponses: 1
    Dernier message: 26/05/2005, 08h36
  3. Problème mémoire
    Par charliejo dans le forum MFC
    Réponses: 8
    Dernier message: 13/04/2005, 13h45
  4. Problémes mémoire avec le bde sur des bases paradox
    Par Keke des Iles dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/05/2004, 16h55
  5. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 13h20

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