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 :

Détecter un processus en cours


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 44
    Points : 28
    Points
    28
    Par défaut Détecter un processus en cours
    Bonsoir à tous,

    Voilà, cela fait quelques jours que je me
    suis mis à programmer en python. (Que je
    trouve fort sympathique )

    Mais voilà, je recherche une fonction qui puisse
    me permettre de détecter si un processus bien
    spécifique (dont je connaisse le nom à l'avance) est
    en cours d'exécution.

    Après plusieurs recherches, j'ai vu qu'il existait
    un module "os" mais je n'ai rien vu à propos
    de ce qui à été décrit ci-dessus.

    Auriez-vous une idée ?

    Merci d'avance,
    Calen

    EDIT: Le système d'exploitation sur lequel le script
    doit tourner est Windows XP SP2.

  2. #2
    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
    Pour Windows, je dirais:
    • Installe les extensions PyWin32 ici (si ce n'est pas déjà fait).
    • Installe le module WMI (que tu trouveras ici).

    Ensuite tu peux faire des choses comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import wmi
    c = wmi.WMI()
    processlist = c.Win32_Process()
    for p in processlist:
        print p.name
     
    # Si tu veux un process particulier:
    myprocess = c.Win32_Process(name="explorer.exe")[0]
    # etc
    Et plein d'autres choses au niveau de l'OS... Documente-toi sur WMI (Windows Management Instrumentation) si tu veux en savoir plus.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup pour cette réponse claire et précise !

    Je vois aller voir tout ça

    Encore merci,
    Calen

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Re-bonjour,

    J'ai un peu chipoté avec WMI mais je n'arrive
    pas à faire exactement ce que je veux avec.

    Voici un schéma de ce je voudrais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SI 'un_programme.exe' démarre
    ALORS executer_tache()
     
    SI 'un_programme.exe' stop
    ALORS executer_une_autre_tache()
    Voici l'exemple qui est donné dans la documentation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import wmi
    c = wmi.WMI()
    process_watcher = c.Win32_Process.watch_for("creation")
    while True:
      new_process = process_watcher()
      print new_process.Caption
    Le problème, c'est que c'est une boucle infinie et que, part
    conséquent, mon programme est "paralysé"

    Est-ce vous avez une méthode ou j'ai raté quelque chose ?

    Merci d'avance,
    Calen

    PS: Débutant inside

  5. #5
    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
    Je pense que tu devrais utiliser les Thread. Ca marche comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    from threading import Thread
     
    class Watcher(Thread):
        def __init__(...):
            # données fournies au thread
     
        def run():
            # code avec la boucle infinie
     
    w = Watcher(...)
    w.start()
    # ton programme continue son exécution
    Autre possibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    from threading import Thread
     
    def watch():
        # code avec la boucle infinie
     
    w = Thread(watch)
    w.start()
    # l'exécution continue ici
    voir doc dans le module threading

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    C'est un peu tard, mais :

    Re-merci

    Calen

    EDIT: J'étais un peu occupé...

    Au fait, merci pour les Cours et tutoriels pour apprendre la programmation Python , en particulier celui la est formidable : Apprendre à programmer avec Python 3 par Gérard Swinnen


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

Discussions similaires

  1. [Lazarus] Détecter des processus en cours
    Par jeffk_ dans le forum Lazarus
    Réponses: 6
    Dernier message: 11/06/2010, 09h18
  2. Réponses: 1
    Dernier message: 21/07/2006, 18h43
  3. [Systeme] Processus en cours d'éxécution
    Par adiGuba dans le forum POSIX
    Réponses: 13
    Dernier message: 16/02/2003, 16h09

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