6 Stimmen

Wie verwalte ich mehrere Unterprozesse in Perl?

Ich habe ein Perl-Programm, das etwa ein halbes Dutzend Programme gleichzeitig im Hintergrund laufen lassen und warten muss, bis sie alle beendet sind, bevor es weitergeht. I

Gibt es ein gemeinsames Idiom für dies in Perl tun? Ich denke derzeit an die Verwendung von Threads.

8voto

friedo Punkte 64178

Verwenden Sie keine Fäden. Fäden sind ätzend. Der richtige Weg ist fork mehrere Prozesse und wait bis sie fertig sind. Wenn Sie wait o waitpid wird der Exit-Status des betreffenden Prozesses in $? .

Siehe die perldocs für Gabel , warten y waitpid und auch die Beispiele in este SO Gewinde.

Wenn Sie nur einen Pool von Unterprozessen verwalten wollen, der eine bestimmte Größe nicht überschreitet, sollten Sie sich das ausgezeichnete Parallel::ForkManager .

2voto

Richard Huxton Punkte 21

Normalerweise würden Sie fork + exec (auf unixbasierten Systemen ist dies traditionell)

Der fork-Aufruf dupliziert den aktuellen Prozess, und bei Bedarf können Sie dann exec in einem der untergeordneten Prozesse aufrufen, um etwas anderes zu tun. Es hört sich so an, als wollten Sie sich nur aufspalten und eine andere Methode/Funktion in Ihrem Kindprozess aufrufen.

Wenn Sie etwas Komplexeres wollen, schauen Sie sich cpan für POE an - damit können Sie alle Arten von komplexen Szenarien verwalten.

Nützliche Links:

Googeln Sie auch "perl cookbook forking server" - ich kann nur einen Link posten, wenn ich mich nicht einlogge.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X