Paralelo :: Loops.

Execute loops usando subprocessos bifurcados paralelos
Baixe Agora

Paralelo :: Loops. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Nome do editor:
  • Peter Valdemar M?rch
  • Site do editor:
  • http://search.cpan.org/~pmorch/

Paralelo :: Loops. Tag


Paralelo :: Loops. Descrição

Execute loops usando subprocessos bifurcados paralelos Muitas vezes, um loop realiza cálculos em que cada iteração do loop não depende da iteração anterior, e as iterações realmente podem ser realizadas em qualquer ordem.parallelle :: loops é um módulo Perl que permite que você execute tais loops em paralelo As CPUs à sua disposição.Es valores são transferidos automaticamente de crianças para os pais via% hashes ou @Arrays, que foram explicitamente configurados para esse tipo de compartilhamento via $ pl- Share (). Hashes transferirá as chaves que são definidas em crianças (mas não limpas ou não especificadas), e elementos que são empurrados para @Arrays em crianças são empurradas para o pai @Array também (mas note que o pedido não é garantido para ser o mesmo que teria sido se feito tudo em um processo, já que não há como saber qual criança terminaria primeiro!) Se você puder ver além da sintaxe ligeiramente desajeitada, você está basicamente recebendo e enquanto os loops que podem correr paralelos sem ter Para se preocupar com garfo, tubos, sinais etc. Isso tudo é tratado por você por este módulo.Synopsis Use paralelo :: Loops; meus $ maxprocs = 5; Meu $ PL = Parallel :: Loops-> Novos ($ MaxProcs); meus @parameters = (0 .. 9); # Queremos realizar algum cálculo pesado para cada @input e # armazenar o resultado de cada cálculo em% de saída. Por esse motivo, nós "empate"% de saída, para que muda para% de saída em qualquer processo filho (veja abaixo) são automaticamente transferidos e atualizados no pai # também. minhas% returnValues; $ pl-> Compartilhar (\% returnValues); $ pl-> foreach (\ @Parameters, sub {# Magicamente "executado em crianças empilhadas paralelas # processos # vamos apenas criar um exemplo simples, mas isso pode ser um cálculo # maciço que será paralelizado, para que # $) MaxProcs diferentes processos estão calculando sqrt # simultaneamente para diferentes valores de $ _ em diferentes CPUs $ returnValues {$ _} = sqrt ($ _);}); foreach (@parameters) {printf "I:% d sqrt (i):% f \ n", $ _, $ returnValues {$}}; } Você também pode usar @Arrays em vez de% hashes e / ou enquanto loops em vez de foreach: minhas @returnvalues; $ pl-> Compartilhar (\ @ returnValues); meu $ i = 0; $ pl-> while (sub {$ i ++ <10} sub {# este sub "magicamente" executado em processos bifurcados paralelos # filhos empurram @returnvalues ;}); e voc


Paralelo :: Loops. Software Relacionado