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 :

Comment suspendre un processus sous Windows en passant par ses threads ?


Sujet :

Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Comment suspendre un processus sous Windows en passant par ses threads ?
    Bonjour,

    Je développe une application 3D en python qui fonctionne sous Linux ET sous Windows. Tout marche (à peu près) bien, excepté un point particulier sur les processus que je n'arrive pas à résoudre.

    En fait, mon application a 2 processus (Process du module processing) dont un qui gère toute la partie GTK. Et comme GTK est relativement gourmant même quand il ne fait rien, je suspends le processus concerné quand je n'en ai pas besoin (réduire sa priorité n'est pas suffisant).

    Sous Linux, aucun problème, mais sous Windows ... Après quelques recherches, j'ai découvert les modules win32api, win32process (et les autres win32). Je vois comment Démarrer/Arrêter processus et threads, suspendre/reprendre les threads. Mais je n'ai rien trouvé pour suspendre/reprendre un processus ! Mais, par exemple, ProcessExplorer le fait.

    Donc, je continue mes recherches et la seule solution envisageable est de trouver tous les threads du processus (tout processus ayant au moins 1 thread) et de les suspendre.

    D'où ma question : comment récupérer la liste des threads d'un processus ?

    Merci d'avance pour votre aide
    Benjamin

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Ça, c'est facile, c'est dans le manuel: threading.enumerate() donne la liste des threads actifs.

    Le nombre de thread actifs est donné par threading.activecount()

    Par contre, je ne sais pas ce qu'on entend par "actif": est-ce qu'un thread arrêté en attente d'une release de lock est actif?

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse tyrtamos

    Je ne connaissais pas cette fonction. Je récupère en effet tous les thread, mais cela ne me règle pas mon affaire car il me manque 2 choses :
    - savoir à quel processus est lié chaque thread
    - pouvoir suspendre et reprendre le thread, ce que la classe threading.Thread n'a pas l'air de faire.

    Benjamin

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Je ne sais pas répondre à la 1ère question.

    Quand à la seconde, je pense qu'on peut mettre un thread en attente, à condition de l'avoir prévu comme cela dans le code (ex: test d'un drapeau).

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. Comment intercepter les messages d'un processus sous windows?
    Par Hamdi Hedhili dans le forum Général Java
    Réponses: 3
    Dernier message: 17/03/2008, 16h57
  2. comment faire l'execution sous windows
    Par debutant-1 dans le forum Visual C++
    Réponses: 7
    Dernier message: 06/08/2006, 18h14
  3. Comment lancer OpenOffice.org sous window
    Par ouioui2000 dans le forum OpenGL
    Réponses: 2
    Dernier message: 17/02/2006, 18h10
  4. Réponses: 9
    Dernier message: 21/12/2005, 17h33
  5. comment installer turbo c sous windows ??????????
    Par amouna dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 27/10/2005, 02h16

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