Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Intermedio » threads y la memoria Responder al tema
Nuevo tema


Página 1 de 1  [ 3 mensajes ] 
 
Nota 2011-08-31 15:51 @702

Perlero Nuevo
Registrado: 2010-02-03 04:59 @249
Mensajes: 12
threads y la memoria
Hola maestros

Me podrías ayudar, con el uso de los threads y el consumo excesivo de memoria y de procesador .

Mi intención es la de ejecutar threads de forma paralela hasta un máximo $ThreadsMAX en (Windows).

El problema es que dependiendo de los valores de @URLs y de $ThreadsMAX se me dispara el consumo de memoria de forma descontrolada.

¿Dónde puedo leer acerca del uso de los threads o explicarme el porqué de lo que sucede?



Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. use POSIX qw[ _exit ];
  2. use Time::HiRes qw[ usleep ];
  3. use threads ( stack_size => 4096 );
  4. use threads::shared;
  5.  
  6. $|++;
  7.  
  8. use HTTP::Request;
  9. use LWP::UserAgent;
  10.  
  11. my $started : shared = 0;
  12. my $ended : shared   = 0;
  13.  
  14. my @URLs       = ();                   #Lista de Urls
  15. my $ThreadsMAX = 50;
  16. BUCLE: while (1) {
  17.     if ( ( $started - $ended ) < $ThreadsMAX ) {
  18.         if ( @URLs >= 1 ) {
  19.             my $URL = shift(@URLs);
  20.             threads->create( 'execute_request', $URL )->detach;
  21.         }
  22.         else {
  23.             last BUCLE;
  24.         }
  25.     }
  26. }
  27.  
  28. _exit(0);
  29.  
  30. sub execute_request {
  31.     my $URL = shift(@_);
  32.  
  33.     { lock $started; ++$started; }
  34.     print ">> $started - $ended >> " . ( $started - $ended ) . "\n";
  35.     my $request = HTTP::Request->new( 'GET', $URL );
  36.     my $agent = LWP::UserAgent->new();
  37.     $agent->agent('Mozilla/5.0');
  38.     $agent->timeout(15);
  39.     my $response = $agent->request($request);
  40.     if ( $response->is_success ) {
  41.     }
  42.     else {
  43.     }
  44.     { lock $ended; ++$ended; }
  45. }
  46.  


Última edición por Dgrande el 2011-08-31 17:26 @768, editado 1 vez en total

Nota 2011-08-31 16:51 @744
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10272
Re: threads y la memoria
¿Qué versión de Perl tienes?

En Perl 5.14.1 se ha multiplicado por 100 la velocidad de reserva de memoria de algunos tipos de procesos.

_________________
JF^D Perl programming


Nota 2011-08-31 17:04 @752

Perlero Nuevo
Registrado: 2010-02-03 04:59 @249
Mensajes: 12
Re: threads y la memoria
¡¡¡Ta-chan!!! "This is perl, v5.10.1 built for MSWin32-x86-multi-thread "

Probaré de actualizar a ver si por ahí van los tiros, y comento si hay cambios...

Igualmente... ¿cómo veis el código?

Gracias.

diego


Responder al tema  [ 3 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO