[Madrid-pm] perl threads

Joaquín Ferrero explorer en joaquinferrero.com
Mie Oct 13 14:22:45 PDT 2010


El 13/10/10 23:03, mipassa escribió:
> Cierto todo lo que dices. Pero mi problema podría tratar por ejemplo de
> sondear estado de 100K equipos, que mientras llegas o no, te da timeout, y
> demás tiempo muertos, estas pasando a los otros 99.999. La cosa es llenar
> esos tiempos muertos con algo/thread ocioso y que no haya que estar creando
> continuamente costosos hijos/forks/procesos
>
> Thanks again por vuestras sabias opiniones
>

Que casualidad, entonces, que es parecido al ejemplo que hay en la página de manual de Parallel::ForkManager :)


   use LWP::Simple;
   use Parallel::ForkManager;

   #...

   @links=(
     ["http://www.foo.bar/rulez.data","rulez_data.txt"],
     ["http://new.host/more_data.doc","more_data.doc"],
     #...
   );

   #...

   # Max 30 processes for parallel download
   my $pm = new Parallel::ForkManager(30);

   foreach my $linkarray (@links) {
     $pm->start and next; # do the fork

     my ($link,$fn) = @$linkarray;
     warn "Cannot get $fn from $link"
       if getstore($link,$fn) != RC_OK;

     $pm->finish; # do the exit in the child process
   }
   $pm->wait_all_children;


-- 
JF^D


Más información sobre la lista de distribución Madrid-pm