Ich habe ein Python-Skript namens "prog.py". Ich möchte ein Feature hinzufügen, das einen neuen Prozess öffnet, der den Betrieb des aktuellen Skripts überwacht. Wenn das Skript beendet wird, erkennt der Prozess die Beendigung und ruft dann eine bestimmte Funktion auf. Hier ist ein Pseudo-Code:Erstellen eines Prozesses in Python, der nach dem Hauptprozess endet
while (script is active):
sleep(1) # check its status once a second
func()
Haben Sie eine Idee, wie es geht?
+1 für den letzten Satz. Verwenden Sie einfach "atexit", und kümmern Sie sich nicht um Prozesse, es sei denn, Sie haben einen bestimmten Grund. –
Das Problem ist mit dem folgenden Hinweis in Atexit-Dokumentation: "Die über dieses Modul registrierten Funktionen werden nicht aufgerufen, wenn das Programm durch ein Signal nicht von Python, wenn ein schwerwiegender interner Python-Fehler erkannt wird oder wenn os._exit erkannt wird() wird genannt." Ich bin auf der Suche nach einer Lösung, die in jedem Fall von Skript Beendigung funktionieren ... – CrazySynthax
@CrazySynthax: In diesem Fall wäre es noch einfacher, den Monitor-Prozess verwalten den "Haupt" -Prozess, anstatt die "Main "einen Monitor laufen lassen, der dann versucht, den Hauptprozess zu überwachen. Ersteres ist eine tote einfache Verwendung von "Subprozess", letzteres beinhaltet im Allgemeinen nicht-portable OS-spezifische Prozessabtrennungsschritte und "tightarole". – ShadowRanger