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

Bibliothèques tierces Python Discussion :

fuite mémoire API traits


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 106
    Points : 182
    Points
    182
    Par défaut fuite mémoire API traits
    Bonjour

    Ayant récupéré un gros projet en Python utilisant l'API Traits, PyQT, etc..., nous avons beaucoup de fuite mémoire et il me semble que la plupart vienne de cet API Traits.

    Voici un exemple que j'ai pris d'un tutoriel auquel j'ai voulu supprimer certaines références mais on dirait que j'ai encore des références sur l'objet d'instance Child car à la sortie de mon code j'ai
    -------------
    joe refcount 3
    moe refcount 3
    reset_traits
    joe refcount 2
    moe refcount 3
    -------------
    joe is None
    <__main__.Child object at 0x014B15D0> 3

    Je voudrais savoir si quelqu'un sait comment enlever toutes les références sur mon instance de Child.
    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    from enthought.traits.api import Delegate, HasTraits, Instance, Int, Str
     
    class Parent(HasTraits):
     
        # INITIALIZATION: last_name' is initialized to '':
        last_name = Str('')
     
     
    class Child(HasTraits):
        age = Int
     
        # VALIDATION: 'father' must be a Parent instance:
        father = Instance(Parent)
     
        # DELEGATION: 'last_name' is delegated to father's 'last_name':
        last_name = Delegate('father')
     
        # NOTIFICATION: This method is called when 'age' changes:
        def _age_changed(self, old, new):
            print 'Age changed from %s to %s ' % (old, new)
     
    # Set up the example:
    joe = Parent()
    moe = Child()
    moe.father = joe
     
    print "-------------"
     
    import sys
    import weakref
     
    # create reference faible
    joeRef = weakref.ref(joe)
    moeRef = weakref.ref(moe)
     
    # nbre reference
    print "joe refcount", sys.getrefcount(joe)
    print "moe refcount", sys.getrefcount(moe)
     
    #
    print "reset_traits"
    joe.reset_traits()
    moe.reset_traits()
     
    # nbre reference
    print "joe refcount", sys.getrefcount(joe)
    print "moe refcount", sys.getrefcount(moe)
     
    joe = None
    moe = None
     
    print "-------------"
     
    # récupére l'objet à partir de la référence
    joe = joeRef()
    if joe:
        print joe, sys.getrefcount(joe)
    else:
        print "joe is None"
    # récupére l'objet à partir de la référence
    moe = moeRef()
    if moe:
        print moe, sys.getrefcount(moe)
    else:
        print "moe is None"

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

    J'ai copié votre exemple et je l'ai exécuté sur Python 2.7.
    La sortie est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    -------------
    joe refcount 3
    moe refcount 2
    reset_traits
    joe refcount 2
    moe refcount 2
    -------------
    joe is None
    moe is None
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 106
    Points : 182
    Points
    182
    Par défaut
    Bonjour

    Tu utilises quelle version de traits?
    J'utilise la version 3.2.0 avec python 2.5

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 204
    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 204
    Points : 36 632
    Points
    36 632
    Par défaut
    J'utilise la version 4.2.0.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [tomcat][memoire] java.net.URL et fuite mémoire
    Par Seiya dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 09/03/2009, 11h41
  2. api win32 gui drawing fuite mémoire
    Par marud dans le forum Windows
    Réponses: 3
    Dernier message: 19/01/2007, 21h27
  3. Outil de recherche de fuite mémoire
    Par eag35 dans le forum MFC
    Réponses: 4
    Dernier message: 02/02/2005, 13h46
  4. [SWT]SWT et fuite mémoire(ou pas)
    Par menuge dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 22/06/2004, 22h40
  5. [debug] fuites mémoires
    Par tmonjalo dans le forum C
    Réponses: 3
    Dernier message: 28/07/2003, 18h20

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