Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1510 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Lancer une centaine de "threads" sous windows

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] Lancer une centaine de "threads" sous windows

n°662785
burgergold
5$? va chez l'diable!
Posté le 04-03-2004 à 13:47:50  profilanswer
 

J'ai un script qui devra changer le mot de passe d'un user sur plusieurs centaines de pc. Pour éviter que celui-ci prennent plus de 30minutes, j'ai tenté de le forker.
 
Malheureusement, le fork() sous windows est limité à 64 semble t-il.
 
J'ai donc tenté d'utiliser la librairie threads, mais celle-ci est vachement lourde en mémoire, c'est à dire que la mémoire augmente à chaque threads lancé et ne diminue pas tant que tout le script n'est pas complété.
 

Code :
  1. open(FENT, $opts{"file"}) or die "Can't open " . $opts{"file"} . "\n";
  2.     foreach (<FENT> ) {
  3.       $_ =~ s/\n//g;
  4.       my $forked = async {user_change_password($_, $opts{"user"}, $opts{"old"}, $opts{"new"});}
  5.     }
  6.     close FENT;

mood
Publicité
Posté le 04-03-2004 à 13:47:50  profilanswer
 

n°662847
chopman
Posté le 04-03-2004 à 14:14:03  profilanswer
 

Dans la doc il fait écrit que si on fait "detach" apres le thread, perl nettoie le thread quand il a terminé mais apparement ca ne fonctionne pas... g le meme probleme...

n°662851
burgergold
5$? va chez l'diable!
Posté le 04-03-2004 à 14:16:02  profilanswer
 

le fork fonctionnait bien... mais s'arrete a 64  :sweat:

n°662854
chopman
Posté le 04-03-2004 à 14:17:38  profilanswer
 

beh oui c genant...

n°662857
burgergold
5$? va chez l'diable!
Posté le 04-03-2004 à 14:20:40  profilanswer
 

Code :
  1. my $thread = threads->new(\&user_change_password, $_, $opts{"user"}, $opts{"old"}, $opts{"new"});
  2.       $thread->detach;


 
ca semble fonctionner à merveille, je stagne à 36mo alors quavant je montais jusqua 400!

n°662876
chopman
Posté le 04-03-2004 à 14:27:27  profilanswer
 

t'es sûr que ca stagne? paske moi ca ne fait qu'augmenter... petit à petit mais sûrement lol
Faut dire que tu en fais 100 mais apres c tout...
moi je les lance en boucle ttes les 5minutes

n°662884
burgergold
5$? va chez l'diable!
Posté le 04-03-2004 à 14:30:20  profilanswer
 

jai fait le test sur 500
 
ca dépend combien de thread ton cpu est capable de prendre aussi
 
su un P3 900, je stagnais à 36mo
 
sur un quad Xeon 550, j'ai monté jusqua 60 environ mais ca restait stable

n°662902
chopman
Posté le 04-03-2004 à 14:39:50  profilanswer
 

C'est un p4 2.6Ghz donc je crois que ca va! ;o)
il ralenti pas du tout, c au niveau de la memoire, toutes les 5minutes la taille prise par l'interpreteur en memoire augmente... C pas très viable, mon programme devra tourner sans arret theoriquement pendant tres longtemps! Meme si le serveur sur lequel je vais l'installer a 2.5Go de memoire, apres meme pas un mois ca va etre saturé!

n°662918
pospos
Posté le 04-03-2004 à 14:46:56  profilanswer
 

Il vaut mieux eviter les thread et les fork sous windows, pour l'instant.
 
t'as pas le moyen de le faire en asynchrone?
 

n°662940
burgergold
5$? va chez l'diable!
Posté le 04-03-2004 à 14:56:10  profilanswer
 

pospos a écrit :

Il vaut mieux eviter les thread et les fork sous windows, pour l'instant.
 
t'as pas le moyen de le faire en asynchrone?
 
 


 
async? c'est justement lui qui me mangeais toute ma mémoire. Avec threads et $threads->detach, tout va #1 après plusieurs essais sur quelques machines

mood
Publicité
Posté le 04-03-2004 à 14:56:10  profilanswer
 

n°662948
pospos
Posté le 04-03-2004 à 14:59:53  profilanswer
 

non je parlais pas de cet async la
il vient d'ou d'ailleurs? (il vient d'ou? d'ailleurs?)


Message édité par pospos le 04-03-2004 à 15:00:03
n°663656
burgergold
5$? va chez l'diable!
Posté le 04-03-2004 à 22:52:24  profilanswer
 

pospos a écrit :

non je parlais pas de cet async la
il vient d'ou d'ailleurs? (il vient d'ou? d'ailleurs?)


 
j'avais trouvé ca, avec un use de threads, on peut utiliser un truc du genre
 
my $child_thread = asyn { put your code };


---------------
http://www.boincstats.com/signature/user_664861.gif

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Lancer une centaine de "threads" sous windows

 

Sujets relatifs
probleme d'adaptation sous windows XP de visual Cafficher des images dix par dix sur perl
threads[Perl] Win32API et return code
[Perl] Navigation dans un site + remplissage de formulaires[C] Cherche un tuto pour apprendre à faire des threads en C
[C++ Erreur] ComCtrls.hpp(2638): E2015 Ambiguïté entre 'Windows' et...[C#]Lancer mon appli Windows sur l'écran secondaire
prog. windows : contrôles d'édition et polices de caractères 
Plus de sujets relatifs à : [Perl] Lancer une centaine de "threads" sous windows


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR