2009-07-06 15 views
13

Jaki jest najlepszy moduł do równoległego procesu w Perlu? Nigdy nie robiłem równoległego przetwarzania w Perlu.Jaki jest najlepszy moduł do przetwarzania równoległego w Perlu?

Co to jest dobry moduł Perla dla procesu równoległego, który będzie używany w dostępie do bazy danych i wysyłaniu wiadomości?

Zajrzałem do modułu Parallel::ForkManager. Każdy pomysł doceniony.

+5

Czy chcesz zrównoważyć kod związany z procesorem lub związany z IO? – jrockway

Odpowiedz

13

Parallel::ForkManager, jak mówi POD, może ograniczyć liczbę rozwidlonych procesów. Możesz wtedy użyć dzieci do wykonania jakiejkolwiek pracy. Pamiętam używanie modułu do downloadera.

12

Wszystko zależy od konkretnego przypadku. W zależności od tego, czego dokładnie potrzebujesz, aby osiągnąć, może być lepiej z jednym z następujących:

Dla niektórych zadań są również wyspecjalizowane moduły - do przykład LWP::Parallel::UserAgent, co zasadniczo oznacza - musisz podać nam więcej szczegółów na temat tego, co chcesz osiągnąć, aby uzyskać najlepszą możliwą odpowiedź.

7

Wielordzeniowy silnik dla Perla (MCE) został opublikowany na CPAN.

http://code.google.com/p/many-core-engine-perl/

https://metacpan.org/module/MCE

MCE pochodzi z różnych przykładów pokazujących rzeczywistych scenariuszy przypadków użycia na parallelizing coś tak małego jak kot (spróbuj N) do greping wzorców i sumowania liczby słów.

barrier_sync.pl 
      A barrier sync demonstration. 

cat.pl Concatenation script, similar to the cat binary. 
egrep.pl Egrep script, similar to the egrep binary. 
wc.pl  Word count script, similar to the wc binary. 

findnull.pl 
      A parallel driven script to report lines containing 
      null fields. It is many times faster than the binary 
      egrep command. Try against a large file containing 
      very long lines. 

flow_model.pl 
      Demonstrates MCE::Flow, MCE::Queue, and MCE->gather. 

foreach.pl, forseq.pl, forchunk.pl 
      These take the same sqrt example from Parallel::Loops 
      and measures the overhead of the engine. The number 
      indicates the size of @input which can be submitted 
      and results displayed in 1 second. 

      Parallel::Loops:  600 Forking each @input is expensive 
      MCE foreach....: 34,000 Sends result after each @input 
      MCE forseq.....: 70,000 Loops through sequence of numbers 
      MCE forchunk...: 480,000 Chunking reduces overhead 

interval.pl 
      Demonstration of the interval option appearing in MCE 1.5. 

matmult/matmult_base.pl, matmult_mce.pl, strassen_mce.pl 
      Various matrix multiplication demonstrations benchmarking 
      PDL, PDL + MCE, as well as parallelizing Strassen 
      divide-and-conquer algorithm. Also included are 2 plain 
      Perl examples. 

scaling_pings.pl 
      Perform ping test and report back failing IPs to 
      standard output. 

seq_demo.pl 
      A demonstration of the new sequence option appearing 
      in MCE 1.3. Run with seq_demo.pl | sort 

tbray/wf_mce1.pl, wf_mce2.pl, wf_mce3.pl 
      An implementation of wide finder utilizing MCE. 
      As fast as MMAP IO when file resides in OS FS cache. 
      2x ~ 3x faster when reading directly from disk. 
Powiązane problemy