Parallel :: Loops.

Führen Sie die Schleifen mit parallelen gabrierten Unterprozessen aus
Jetzt downloaden

Parallel :: Loops. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Name des Herausgebers:
  • Peter Valdemar M?rch
  • Website des Verlags:
  • http://search.cpan.org/~pmorch/

Parallel :: Loops. Stichworte


Parallel :: Loops. Beschreibung

Führen Sie Schleifen mit parallelen Gabelungs-Unterprozessen aus Oft führt eine Schleife Berechnungen aus, in denen jede Iteration der Schleife nicht von der vorherigen Iteration abhängt, und die Iterationen könnten in keiner Reihenfolge durchgeführt werden. Parallel :: Loops ist ein Perl-Modul, mit dem Sie solche Schleifen parallel mit allen ausführen können Der CPUs zu Ihrer Entsorgung Hashes transferiert die Tasten, die in Kindern eingestellt sind (aber nicht gelöscht oder nicht unternommen), und Elemente, die an @arrays bei Kindern gedrückt werden, werden auch auf das Elternteil @array gedrückt (aber beachten Sie, dass die Bestellung nicht garantiert dasselbe ist wäre, wenn alles in einem Prozess fertig ist, da es keine Möglichkeit hat, zu wissen, welches Kind zuerst fertig ist!) Wenn Sie an der leicht umständlichen Syntax vorbei sehen können, werden Sie grundsätzlich feststellen und während Schlaufen, die parallel laufen können, ohne zu laufen Um mit Gabel, Rohren, Signalen usw. zu stören usw. ist alles von diesem Modul für Sie erledigt. meine $ maxprocs = 5; mein $ pl = parallel :: Loops-> NEU ($ MAXPROCS); meine @parameter = (0 .. 9); # Wir möchten für jeden @Input eine kräftige Berechnung durchführen, und # speichern Sie jedes Berechnungsergebnis in%. Aus diesem Grund werden wir% der Ausgabe # "Krawatten", so dass ändert sich in% der Ausgabe in jedem untergeordneten Prozess # (siehe unten) automatisch, automatisch in den # -Vertrag übertragen und aktualisiert. meine% RenditeValues; $ pl-> teilen (\% ReturnValues); $ pl-> foreach (\ @ @ @ @Parameters, sub {# Dieser Sub "magisch" in parallel ausgeführten gegabeltem kind # Prozessen # lässt einfach ein einfaches Beispiel erstellen, aber dies könnte eine # massive Berechnung sein, die paralleliert wird, so dass # $ MaxProcs-unterschiedliche Prozesse berechnen SQRT # gleichzeitig für verschiedene Werte von $ _ auf verschiedenen CPUs $ ReturnValues {$ _} = sqrt ($ _);}); foreach (@parameter) {printf "i:% d sqrt (i):% f \ n", $ _, $ returnValues {$ _ _ _}; } Sie können @arrays anstelle von% Hashes verwenden, und / oder während Loops statt foreach: meine @returnvalues; $ pl-> teilen (\ @ ReturnValues); mein $ i = 0; $ pl-> while (sub {$ i ++ <10} sub {# dieser sub "magisch" in parallel ausgef


Parallel :: Loops. Zugehörige Software