PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.python > Tuer un thread en Python
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Tuer un thread en Python

Réponse
 
LinkBack Outils de la discussion
Vieux 15/09/2007, 12h34   #1
Salvatore
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Tuer un thread en Python

Bonjour la communauté,

Pour ce que cela intéresse, voici une recette permettant de tuer
les threads enfants avec Python

http://sebulba.wikispaces.com/recipe+thread2



Dans l'environnement Windows, c'est particulièrement utile :-)
Dans un de mes projet, je lance plusieurs threads, et bien
que les tâches soit accomplies, Windows met très longtemps sur chacune
de tâches avant de me rendre la main.

Cordialement

Salvatore
  Réponse avec citation
Vieux 15/09/2007, 14h13   #2
MC
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Tuer un thread en Python

Salut !

Je ne connais pas assez le fonctionnement interne de Python, pour bien
comprendre le code.

Mais, ça me semble très intéressant. On devrait, avec ça, gérer plus
efficacement les pools de threads.

Sinon, je n'ai pas tes problèmes, "Dans l'environnement Windows".
Lorsque mes threads se terminent, ça (Python) répond de suite.








--
@-salutations

Michel Claveau


  Réponse avec citation
Vieux 15/09/2007, 16h26   #3
Salvatore
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Tuer un thread en Python

Bonjour,

En fait, sous Windows il n'y pas de gestions de signaux
pouvant être transmis à un thread pour y mettre fin éventuellement.
Et Python ne dispose pas en standard de moyen de tuer un thread
comme il est possible de le réaliser en Java.

Mon problème actuellement, est que je dois reconnecter un nom
important de boite aux lettres dans deux domaines différents.
A chaque raccordement, la réponse me parvient aux bout de 15minutes et
encore, pourtant la BAL est raccordée, c'est pour cela que je préfère
tuer le thread enfant plutot que de l'attendre.

Ceci dit je ne fais pas la fine bouche avec Windows :-)
Quotidiennement, je découvre de nouvelles fonctionalités.
Dernière en date , wmi en mode ligne de commande : wmic
qui révèle des possibilités insoupçonnées.
http://support.microsoft.com/service...&LN=cs&gssnb=1

PS : Voici un script permettant de gérer des pools de Threads
http://www.chrisarndt.de/en/software/python/threadpool/

Cordialement

Salvatore



MC a écrit :
> Salut !
>
> Je ne connais pas assez le fonctionnement interne de Python, pour bien
> comprendre le code.
>
> Mais, ça me semble très intéressant. On devrait, avec ça, gérer plus
> efficacement les pools de threads.
>
> Sinon, je n'ai pas tes problèmes, "Dans l'environnement Windows".
> Lorsque mes threads se terminent, ça (Python) répond de suite.
>
>
>
>
>
>
>
>

  Réponse avec citation
Vieux 15/09/2007, 16h44   #4
Salvatore
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Tuer un thread en Python

Salvatore a écrit :
> Ceci dit je ne fais pas la fine bouche avec Windows :-)
> Quotidiennement, je découvre de nouvelles fonctionalités.
> Dernière en date , wmi en mode ligne de commande : wmic
> qui révèle des possibilités insoupçonnées.
> http://support.microsoft.com/service...&LN=cs&gssnb=1


Pour appater le chalant :-)

C:\>WMIC PROCESS GET name, processid, CommandLine /every:1
  Réponse avec citation
Vieux 15/09/2007, 20h21   #5
Méta-MCI \(MVP\)
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Tuer un thread en Python

Bonsoir !


Si tu veux jouer avec WMI et les processus, le script suivant t'amusera certainement :


import win32com.client
wmihandle = win32com.client.GetObject('winmgmts:')
process_list = wmihandle.ExecQuery('Select * from Win32_Process')
for p in process_list:
detail=p.GetObjectText_().split('\n')
for ligne in detail:
if ligne[0:1]!='{' and ligne[0:1]!='}':
l=ligne.split('=')
if len(l)>=2:
item=l[0][1:-1]
valeur=l[1][2:-2]
print item,"=",valeur
print '-'*66



Pour WMIC, je l'utilise quotidiennement, dans des batchs sur serveurs.

Si tu souhaites t'amuser avec WMI en ligne de commande, regarde PowerShell. Il permet, notamment, de
naviguer dans WMI, en visualisant toutes les collections (listes d'attributs/propriétés)

Et, pour trouver quelques trucs, à partir du bureau, appuie sur [F1], et, lorsque l'aide sera
chargée, cherche avec ces phrases :
Nouveaux outils de ligne de commande
Références de A à Z de la ligne de commande
Vue d'ensemble de l'interpréteur de commandes

A noter que certaines commandes, à l'instar de WMIC, Netsh, Net, etc. sont gigantesques d'options
et de possibilités.



Enfin, dernier point, WMI n'est que l'implémentation windows de WBEM (Web-Based Enterprise
Management) provenant de DMTF (Distributed Management Task Force), qui existe aussi dans linux, bsd,
etc.



@-salutations

Michel Claveau



PS : la ligne de commande du lancement d'un processus ne peut pas être obtenu de cette façon (WMI)
pour windows-2000 (et avant) ; cela n'est implémenté qu'à partir d'XP.


  Réponse avec citation
Vieux 16/09/2007, 03h17   #6
Salvatore
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Tuer un thread en Python

Merci Michel :-)


Méta-MCI (MVP) a écrit :
> Bonsoir !
>
>
> Si tu veux jouer avec WMI et les processus, le script suivant t'amusera
> certainement :
>
>
> import win32com.client
> wmihandle = win32com.client.GetObject('winmgmts:')
> process_list = wmihandle.ExecQuery('Select * from Win32_Process')
> for p in process_list:
> detail=p.GetObjectText_().split('\n')
> for ligne in detail:
> if ligne[0:1]!='{' and ligne[0:1]!='}':
> l=ligne.split('=')
> if len(l)>=2:
> item=l[0][1:-1]
> valeur=l[1][2:-2]
> print item,"=",valeur
> print '-'*66
>
>
>


>
>

  Réponse avec citation
Vieux 17/09/2007, 03h24   #7
jean-michel bain-cornu
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Tuer un thread en Python

Bonjour,
> A noter que certaines commandes, à l'instar de WMIC, Netsh, Net, etc.
> sont gigantesques d'options et de possibilités.

Perso, je préférerais une commande ps, dispo en natif dans le système de
base, tout simplement.
Je me rappelle avoir perdu beaucoup de temps avec WMI, simplement pour
avoir une liste de process (la haine). Par exemple, ça ne marche pas, ou
pas bien, lorsque le programe s'exécute dans un service. Je dis pas bien
parce que ça ne marche pas sur mon pc de dèv, mais je ne suis pas sûr
que ça ne marcherait pas si j'installais une verrue x ou y dans l'os, ce
que je ne souhaite pas faire.
>
> Enfin, dernier point, WMI n'est que l'implémentation windows de WBEM
> (Web-Based Enterprise Management) provenant de DMTF (Distributed
> Management Task Force), qui existe aussi dans linux, bsd, etc.

A noter que WMI ne marche pas dans virtualbox (quid de vmware ?), ce qui
pose problème (ça rend une erreur du style 'service not found') à ceux
qui utilisent cet environnement.

Si quelqu'un a une solution pour ces deux problèmes (autre chose que
porter sous linux, je sais, ça marche, merci), je suis preneur.

A+
jm

PS : xp sp3, python 2.4.4
  Réponse avec citation
Vieux 17/09/2007, 13h12   #8
Méta-MCI \(MVP\)
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Tuer un thread en Python

Bonjour !


>Perso, je préférerais une commande ps, dispo en natif dans le système de base, tout simplement.


WMIC est une commande (utilisable en invite de commande) dispo dans les windows standards (sauf,
peut-être, Vista-basic)

Sinon, en standard (sans rien ajouter), tu as aussi, dans windows XP/2003/Vista, les commandes
TASKLIST et TASKKILL.
Faire Tasklist /? pour voir l'aide.


> virtualbox (quid de vmware ?)


Pour les machines virtuelles, désolé, je commence seulement à utiliser Virtual-PC-2007 et
Virtual-Servers ; je n'ai pas vraiment d'expériences avec les outils alternatifs.
Dans Virtual-PC, cela dépend de l'OS virtuel lancé. Mais, WMI, comme Tasklist, ont l'air de
fonctionner chez moi (sur un XP-pro virtuel, au-dessus d'un Vista intégral). Le script Python que
j'ai montré tantôt fonctionne aussi.


@-salutations

Michel Claveau










  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 13h33.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,15765 seconds with 16 queries