Parallel :: Loops

Loops uitvoeren met parallelle gevorkte subprocessen
Download nu

Parallel :: Loops Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Naam uitgever:
  • Peter Valdemar M?rch
  • Uitgever website:
  • http://search.cpan.org/~pmorch/

Parallel :: Loops Tags


Parallel :: Loops Beschrijving

Loops uitvoeren met parallelle gevorkte subprocessen Vaak voert een lus berekeningen uit waarbij elke iteratie van de lus niet afhankelijk is van de vorige iteratie, en de iteraties kunnen echt in elke volgorde worden uitgevoerd.Parallel :: Loops is een PERL-module waarmee u dergelijke lussen in parallel kunt uitvoeren met behulp van alles De CPU's tot uw beschikking. Return-waarden worden automatisch van kinderen naar ouders overgedragen via% hashes of @arrays, die expliciet zijn geconfigureerd voor dat soort delen via $ PL-> Share (). Hashes zullen sleutels overbrengen die zijn ingesteld in kinderen (maar niet gewist of unset) en elementen die worden geduwd naar @arrays bij kinderen worden ook naar de ouder geduwd (maar merk op dat de bestelling niet is gegarandeerd Zou al in één proces zijn gedaan, omdat er geen manier is om te weten welk kind het eerst zou afmaken!) Als je voorbij de enigszins ongemakkelijke syntaxis kunt zien, krijg je in principe foreach en terwijl looplingen die parallel kunnen lopen Om de moeite te doen met vork, leidingen, signalen enz. Dit wordt allemaal voor u behandeld door deze module.Synopsis Gebruik parallelle :: loops; mijn $ maxprocs = 5; Mijn $ PL = Parallel :: Loops-> Nieuw ($ maxprocs); mijn @parameters = (0 .. 9); # We willen een flinke berekening uitvoeren voor elke @input en # Sla elk berekeningsresultaat in% output opslaan. Om die reden, we # "das"% uitgang, zodat wijzigingen in% uitgang in elk kind-proces # (zie hieronder) automatisch worden overgedragen en bijgewerkt in de # ouder. mijn% terugvorderingen; $ PL-> Delen (\% retournevalues); $ PL-> Foreach (\ @parameters, sub {# Dit sub "Magisch" uitgevoerd in parallelle gevorkte kind # processen # Lets Creëer gewoon een eenvoudig voorbeeld, maar dit kan een # enorme berekening zijn die parallelaliseerd zal zijn, zodat # $ MAXPROCS Verschillende processen berekenen SQRT # gelijktijdig voor verschillende waarden van $ _ op verschillende CPUS $ terugvorderingen {$ _} = sqrt ($ _);}); Foreach (@parameters) {printf "I:% D SQRT (I):% F \ N", $ _, $ terugvorderingen {$ _}; } U kunt @Arrays ook gebruiken in plaats van% hashes, en / of terwijl lussen in plaats van uitkering: mijn @returnvalues; $ PL-> Delen (\ \ @ retournevalues); mijn $ I = 0; $ PL-> terwijl (sub {$ i ++ <10} sub {# dit sub "magisch" uitgevoerd in parallelle gevorkte # kindprocessen duwen @returnvalues ;}); en dat kan hebben zowel foreach als tijdens het retourneren van waarden zodat $ pl-> Share () helemaal niet nodig is: mijn $ MAXPROCS = 5; Mijn $ PL = Parallel :: Loops-> Nieuw ($ maxprocs); Mijn% terugvalues = $ PL-> Foreach (, sub {# Nogmaals, dit wordt uitgevoerd in een gevorkbaar kind $ _ => sqrt ($ _);}); Vereisten: · Perl


Parallel :: Loops Gerelateerde software