パラレル::ループ

並列フォークサブプロセスを使用したループの実行
今すぐダウンロード

パラレル::ループ ランキングとまとめ

広告

  • Rating:
  • ライセンス:
  • Perl Artistic License
  • 出版社名:
  • Peter Valdemar M?rch
  • 出版社のWebサイト:
  • http://search.cpan.org/pmorch/

パラレル::ループ タグ


パラレル::ループ 説明

パラレルフォークサブプロセスを使用してループを実行します 多くの場合、ループは以前の反復に依存しない計算を実行し、反復は実際に任意の順序で実行できるようになります。あなたの処分のCPU.Return値は、%Hashesまたは@Arraysを介して子供から親に自動的に転送され、それは$ pl-> share()を介してそのような共有のために明示的に構成されています。ハッシュは、子供に設定されているキーを転送します(まだ解除されない、または設定されていません)、子供の@Arraysにプッシュされている要素は親@Arrayにもプッシュされます(ただし、注文はそれと同じであることが保証されていないことに注意してください。あなたが少し厄介な構文を過ぎることができるのであれば、あるプロセスですべてのプロセスで行われたでしょう!)少し厄介な構文を過ぎることができるならば、あなたは基本的にはfireachを使いながら、それが並行して並行して実行することができるループです。フォーク、パイプ、シグナルなどを煩わせるためにこれはすべてこのMODIONによってあなたのために処理されます。 My $ MAXPROCS = 5。 My $ PL = PARALLEL ::ループ - >新規($ MAXPROC);私の@parameters =(0.9); #各計算の結果を%出力に保存してください。そのため、NE#「TIE」出力%出力が任意の子プロセス#(下記参照)の%の出力が自動的に転送され更新されます。私の%retrualvalues; $ PL->共有(%ReturnValues); $ pl-> foreach( @parameters、sub {#このサブ "#processed#processed#processed#processes)を使用できますが、これは並列化される#大規模な計算である可能性があるので、#$ MaxProcsさまざまなプロセスは、異なるCPU $ ReturnValues {$ _} = SQRT($ _);}の$ _の値に対して異なるプロセスを同時に計算しています。 foreach(@parameters){printf "i:%d sqrt(i):%f n"、$ _、$ returnvalues {$ _}; foreachではなく、%ハッシュの代わりに@Arraysを使用することもできます。 $ PL->共有( @ ReturnValues);私の$ i = 0; $ PL→(sub {$ i ++ <10}、サブ{#このサブ "##このサブ" "amerally forked#child processesで実行され、;});; $ pl-> SHARE()がまったく必要ありません:My $ MAXPROCS = 5; My $ PL = PARALLEL ::ループ - >新規($ MAXPROC); My%ReturnValues = $ PL-> FOREACH(、サブ{#もう一度、これはフォークした子$ _ => SQRT($ _);}で実行されます。要件: ・Perl


パラレル::ループ 関連ソフトウェア