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 : 49
    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
    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 chevronné
    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
    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 : 49
    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
    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 chevronné
    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
    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 Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 067
    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 Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    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.

  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 : 49
    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
    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 émérite
    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
    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 Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    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....

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    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 695
    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 Expert
    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
    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