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 :

Memory leaks - win32gui.GetForegroundWindow() +Threading ?


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut Memory leaks - win32gui.GetForegroundWindow() +Threading ?
    Bonjour, bonsoir,

    La fonction win32gui.GetForegroundWindow() peut-elle commettre des fuites de mémoire ???

    Je viens de passer quelques heures à comprendre d'où venait l'incrémentation de ma RAM sur mon script python. (Relativement faible, 0.1 Mo toutes les 10/15 secondes)
    Après 150 essais, il semblerait que ça vienne de cette fonction appelée via un thread (si la précision était importante).

    Je n'ai pas trouvé beaucoup d'information intelligible à ce sujet sur internet.

    Savez-vous comment je peux tester/traiter ce problème ?

    Arigato !

    PS : Un code qui semble provoquer une fuite de mémoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import win32gui, threading, time#, memory_profiler
     
    #@profile
    def check_foreground():
        hwnd = win32gui.GetForegroundWindow()
     
     
     
    while True:
        threading.Thread(target=check_foreground).start()
        time.sleep(0.005)
    Est-ce lié au threading, à la fréquence élevée, autres ? Est-ce normal ?

    Il semblerait que le problème vienne du faite que je n'ai pas spécifié qu'il s'agisse d'un daemon.
    Si vous pouviez juste me confirmer, mon erreur, je vous en serais gré !
    Dernière modification par Invité ; 29/06/2021 à 12h16.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    La fonction win32gui.GetForegroundWindow() peut-elle commettre des fuites de mémoire ???
    C'est une fonction Windows.
    Rien à voir avec Python.

    Si elle provoque des défauts de mémoire çà aurait fait jaser... et on en trouverait trace sur Internet (et je ne vais pas chercher à votre place car vous auriez du le faire avant même de poster).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    C'est une fonction Windows.
    Rien à voir avec Python.

    Si elle provoque des défauts de mémoire çà aurait fait jaser... et on en trouverait trace sur Internet (et je ne vais pas chercher à votre place car vous auriez du le faire avant même de poster).

    - W
    Un grand merci comme toujours Wiz !

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Un grand merci comme toujours Wiz !
    Cela vous a motivé à ajouter un peu plus d'information au post initial (et du code).
    Néanmoins comme on ne sait pas comment est mesurée la consommation mémoire, chez moi ça semble stable (via le performance monitor)...

    Il va falloir attendre que quelqu'un ait la chance de reproduire et l'envie d'y travailler...

    Citation Envoyé par LeNarvalo Voir le message
    Il semblerait que le problème vienne du faite que je n'ai pas spécifié qu'il s'agisse d'un daemon.
    Il vous suffit de le préciser pour voir si çà change quelque chose...
    Et vous voilà parti sur un sujet qui n'a rien à voir avec la question de départ.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Invité
    Invité(e)
    Par défaut
    @wiz

    Le code de base sans daemon, augmente bien l'utilisation de la RAM, j'ai regardé le gestionnaire des tâches et j'ai téléchargé Process Explorer de longues minutes.

    Avec daemon, il semblerait que ça reste stable.

    J'avais précisé dans le topic original, que c'était dans un thread, tout de même ! Visiblement ne pas utiliser l'attribut daemon engendre une consommation de mémoire, que peut-être des pros comme vous auriez anticipé en ayant vu que c'était dans un thread.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Visiblement ne pas utiliser l'attribut daemon engendre une consommation de mémoire, que peut-être des pros comme vous auriez anticipé en ayant vu que c'était dans un thread.
    On évite de créer des threads à la volée: ça ne sert à rien et çà coûte en temps CPU et en mémoire. Donc sans reproducteur, difficile d'imaginer votre créativité à trouver des bugs: pas grand monde code comme vous.

    Après lorsqu'on rencontre un problème, on essaie de le caractériser pour voir si d'autres sont tombés dedans. Ce qui (souvent) trouve des entrées dans la buglist Python qui permet de vérifier si on a le même problème ou pas (voire de trouver comment vivre avec).

    Si vous venez ici, c'est pas pour qu'on fasse votre boulot (on a déjà de quoi faire) mais pour apprendre à vous dépatouiller tout seul avec les problèmes que vous rencontrez.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Invité
    Invité(e)
    Par défaut
    Wiz tu te calmes !!! Sinon je vais le dire à la maitresse !

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

Discussions similaires

  1. Compilation TAO / Mfc : Memory Leaks
    Par Rolsct dans le forum CORBA
    Réponses: 4
    Dernier message: 17/04/2005, 19h13
  2. [MFC] Thread & memory leaks
    Par Racailloux dans le forum MFC
    Réponses: 7
    Dernier message: 15/03/2005, 12h44
  3. Memory leak en C/C++
    Par Roswell dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 07/07/2004, 19h41
  4. [MFC] A la chasse au memory leak
    Par Yabo dans le forum MFC
    Réponses: 17
    Dernier message: 27/06/2004, 17h35
  5. Réponses: 7
    Dernier message: 26/02/2004, 09h32

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