Lancer une centaine de "threads" sous windows [Perl] - Perl - Programmation
Marsh Posté le 04-03-2004 à 14:14:03
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...
Marsh Posté le 04-03-2004 à 14:20:40
Code :
|
ca semble fonctionner à merveille, je stagne à 36mo alors quavant je montais jusqua 400!
Marsh Posté le 04-03-2004 à 14:27:27
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
Marsh Posté le 04-03-2004 à 14:30:20
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
Marsh Posté le 04-03-2004 à 14:39:50
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é!
Marsh Posté le 04-03-2004 à 14:46:56
Il vaut mieux eviter les thread et les fork sous windows, pour l'instant.
t'as pas le moyen de le faire en asynchrone?
Marsh Posté le 04-03-2004 à 14:56:10
pospos a écrit : Il vaut mieux eviter les thread et les fork sous windows, pour l'instant. |
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
Marsh Posté le 04-03-2004 à 14:59:53
non je parlais pas de cet async la
il vient d'ou d'ailleurs? (il vient d'ou? d'ailleurs?)
Marsh Posté le 04-03-2004 à 22:52:24
pospos a écrit : non je parlais pas de cet async la |
j'avais trouvé ca, avec un use de threads, on peut utiliser un truc du genre
my $child_thread = asyn { put your code };
Marsh Posté le 04-03-2004 à 13:47:50
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é.