|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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. > > > > > > > > |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
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. |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
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 > > > > > |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
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 |
|
![]() |
| Outils de la discussion | |
|
|