Thread Python Skript Aufruf Asynchronous
(9 answers)
Opened by Michael at 2022-01-06 18:04 Guest Michael Vielleicht müssen wir einen Schritt zurückgehen und klären, was Du eigentlich erreichen willst. In Deinem Originalbeispiel startest Du Dein Python-Skript und wertest dann den Status und die Fehlereinträge aus. Klar ist, dass diese Auswertung erst dann erfolgen kann, wenn das Python-Skript beendet ist, und mit dem synchronen system-Aufruf passiert das auch. Nun soll Dein Perl-Skript nach dem Start des Python-Skripts weiter verarbeitet werden. Dafür gibt es in Perl fork. Wie man das genau ausgestaltet, hängt aber davon ab, was Dein Perl-Skript tun soll, nachdem es das Python-Skript gestartet hat. Das Perl-Skript kann nicht sofort $ret abfragen: Auf $ret musst Du warten. Wenn Deine einzige Nutzung von $ret darin besteht, Erroreinträge in ein Logfile zu schreiben, dann kann das auch der "Kind"-Prozess des fork erledigen, der wie in Deinem Beispiel mit system arbeiten kann. Das eigentliche Perl-Skript läuft parallel zum Python-Prozess und Du kannst das Resultat einsammeln, wenn das Skript sonst nix mehr zu tun hat (mit wait oder waitpid), musst das aber nicht zwingend tun. Die STDERR-Frage ist wirklich trivial, wenn Du Dir über den Ablauf der parallelen Prozesse klar geworden bist. Denn auch beim & läuft der Prozess parallel zum Perl-Skript und STDERR gibt's nicht sofort. |