Paralelo :: bucles

Ejecutar bucles usando subprocesos bifurcados paralelos
Descargar ahora

Paralelo :: bucles Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Perl Artistic License
  • Nombre del editor:
  • Peter Valdemar M?rch
  • Sitio web del editor:
  • http://search.cpan.org/~pmorch/

Paralelo :: bucles Etiquetas


Paralelo :: bucles Descripción

Ejecutar bucles con subprocesos bifurcados paralelos. A menudo, un bucle realiza cálculos donde cada iteración del bucle no depende de la iteración anterior, y las iteraciones realmente podrían llevarse a cabo en cualquier orden. Paralelo :: Loops es un módulo Perl que le permite ejecutar tales bucles en paralelo usando todo Las CPU a su disposición. Los valores devueltos se transfieren automáticamente de los niños a los padres a través de% Hashes o @Arrays, que se han configurado explícitamente para ese tipo de compartir a través de $ PL-> Compartir (). Hashes transferirá las claves que se establecen en niños (pero no borradas o desactivadas), y los elementos que se empujan a @arrays en los niños también se envían a los padres @array (pero tenga en cuenta que el pedido no está garantizado como el mismo que ello Hubiera habido hecho todo en un proceso, ¡ya que no hay forma de saber qué niño terminaría primero!) Si puede ver más allá de la sintaxis ligeramente incómoda, básicamente está recibiendo foreach y mientras que los bucles se pueden ejecutar en paralelo sin tener molestarse con un tenedor, tuberías, señales, etc. Todo esto se maneja por este module.Synopsis Use Parallel :: Bucles; My $ maxprocs = 5; My $ PL = Parallel :: Loops-> Nuevo ($ maxprocs); mis @parameters = (0 .. 9); # Queremos realizar un cálculo fuerte para cada @Input y # almacenar el resultado de cada cálculo en% de salida. Por esa razón, nosotros # "Ate"% de salida, de modo que los cambios en% de salida en cualquier número de proceso secundario (ver más abajo) se transfieran y actualizan automáticamente en el # padre. Mis% retornvalos; $ pl-> compartir (\% returnvalues); $ pl-> foreach (@ @parameters, sub {# este sub "mágicamente" ejecutado en los procesos de NIÑO DE NIÑO FIVED PARALELO # permite crear un ejemplo simple, pero este podría ser un cálculo # masivo que se paralelizará, para que # $ MaxProcs Diferentes procesos están calculando SQRT # simultáneamente para diferentes valores de $ _ en diferentes CPUs $ returnvalues ​​{$ _} = SQRT ($ _);}); foreach (@parameters) {printf "i:% d sqrt (i):% f \ n", $ _, $ revertValues ​​{$ _}; } También puede usar @Arrays en lugar de% hashes, y / o mientras los bucles en lugar de foreach: My @returnValues; $ pl-> compartir (\ @ returvalues); My $ i = 0; $ pl-> mientras (Sub {$ i ++ <10} sub {# este sub "m


Paralelo :: bucles Software relacionado