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 :

[Multi Tread] mettre l'application en veille?


Sujet :

Python

  1. #1
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut [Multi Tread] mettre l'application en veille?
    Bonjour, je dev un serveur de traitement de fichier qui fonctionne a la fois avec des multiTread (pour les taches de l'interface) et en multi processing pour faire les traitement sur les fichiers.
    L'interface permet de gérer les flux de fichiers a traiter.

    Mon problème se situe sur l'utilisation processeur.
    En effet mes fonctions threadées permettent de sonder en continu des dossier pour détecter un nouveau fichier a traiter + la mise a jour des informations sur l'interface (reload des items dans des wxListCtrl,...)
    Ca fonctionne impec, mais le proc est sollicité en permanence a 100%, même quand aucun fichier n'est en traitement.
    En soit c'est pas trés important, mais il y a t il une solution pour limiter l'application (Interface) genre qu'elle se mette en sommeil?

    merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Points : 329
    Points
    329
    Par défaut
    Si c'est une boucle infinie, mets un timer du genre time.sleep(0.1) à la fin de ta boucle (donc un "sleep" de 100 ms à chaque itération), ça évitera de "manger" les ressources cpu .

  3. #3
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    c'est déjà fait, mon timer est meme de 0.5. Mais rien y fait.
    Je vais quand meme vérifier dans les 4 threads si en augmentant le time.sleep, cela corrige le problème.

    merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Points : 329
    Points
    329
    Par défaut
    Si tu as déjà mis un timer, alors c'est qu'il y a un problème ailleurs

    Si tu as un bout de code à montrer, n'hésite pas

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    ça doit être possible de demander au system de reveiller le precessus lors d'une modification de dossier. La preuve, si je crée un fichier dans un terminal, mon filemanager est immediatement mis a jour.
    mais comment ....

  6. #6
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    La preuve, si je crée un fichier dans un terminal, mon filemanager est immediatement mis a jour.
    sous Linux, tu peux passer par inotify et ça peut même se gérer en python avec pyinotify.
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  7. #7
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    bon, en fait le problème venait bien de timer mal placé, et certains manquant.
    bref le problème est résolu.

  8. #8
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Citation Envoyé par pacificator Voir le message
    sous Linux, tu peux passer par inotify et ça peut même se gérer en python avec pyinotify.
    Intéressant ça ! Merci pacificator

    À tout hasard... Existe-t-il un mécanisme similaire sous Windows ?

  9. #9
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    À tout hasard... Existe-t-il un mécanisme similaire sous Windows ?
    J'ai trouvé ça: http://msdn.microsoft.com/en-us/library/aa365261(VS.85).aspx, est-ce accessible en python, je n'en ai aucune idée....
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par pacificator Voir le message
    J'ai trouvé ça: http://msdn.microsoft.com/en-us/library/aa365261(VS.85).aspx, est-ce accessible en python, je n'en ai aucune idée....
    Via pywin32: FindFirstChangeNotification

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

  11. #11
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Un petit exemple (simpliste) sous Windows, qui surveille la création/suppression/changement de nom dans un dossier et ses sous-dossiers:
    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
    import win32con, win32file
     
    FILE_ACTIONS = [None, 'ADDED','REMOVED','MODIFIED','RENAMED (old name)','RENAMED (new name)']
     
    foldername = r'c:\temp'
     
    hDir = win32file.CreateFile(
        foldername,
        win32con.GENERIC_READ,
        win32con.FILE_SHARE_READ | win32con.FILE_SHARE_WRITE,
        None,
        win32con.OPEN_EXISTING,
        win32con.FILE_FLAG_BACKUP_SEMANTICS,
        None)
     
    while True:
        actions = win32file.ReadDirectoryChangesW(hDir, 32768, True, win32con.FILE_NOTIFY_CHANGE_FILE_NAME)
     
        for action, filename in actions:
            print FILE_ACTIONS[action], ":", filename
    Pour une utilisation plus sérieuse, il faudra utiliser la version asynchrone (ou un processus séparé).

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

Discussions similaires

  1. mettre mon application en attente
    Par MissTech dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/05/2006, 17h43
  2. Mettre l'application dans le system tray
    Par Tenguryu dans le forum C++Builder
    Réponses: 1
    Dernier message: 01/04/2006, 13h20
  3. Mettre l'ordi en veille
    Par Harry dans le forum API, COM et SDKs
    Réponses: 14
    Dernier message: 03/03/2006, 18h04
  4. Mettre une application en premier plan
    Par portu dans le forum API, COM et SDKs
    Réponses: 15
    Dernier message: 23/02/2005, 15h39
  5. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25

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