2017-08-02 1 views
1

Ich habe einen Haupt-Thread und einen anderen Thread, der startet, nachdem threading.Timer(1,success).start() es aufruft.Killing ein Skript, während eine Funktion aktiv ist

In der definierten Funktion Erfolg muss ich das gesamte Python-Skript zu töten, ich versuchte sys.exit(), aber das beendet nur den Thread. Ich kann den Haupt-Thread nicht als Grund dafür angeben, dass der Timer abgelaufen ist, weil der Haupt-Thread zu lange gedauert hat, um darauf zu reagieren. Es gibt also keine Garantie, dass das Signal vom Haupt-Thread gelesen wird.

Ich überlegte, os.exit() zu verwenden, das funktioniert, aber es ist chaotisch, wenn das Skript nach einer Sekunde von einem anderen Programm neu geladen wird und Speicher voll wird.

+1

Es gibt nichts, was Ihr Programm mit einem anderen Prozess tun kann, der es neu startet. – chepner

Antwort

1

Sie können die erstellten Thread mit einem Timeout kommen:

join(timeout=None) 

So wird es nicht für die Fertigstellung warten.

Verwandte Themen