So beenden Sie den Python-Thread, ohne das Flag ständig zu überprüfen

class My_Thread(threading.Thread):

    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        print "Starting " + self.name
        cmd = [ "bash", 'process.sh']
        p = subprocess.Popen(cmd,
                     stdout=subprocess.PIPE,
                     stderr=subprocess.STDOUT)
        for line in iter(p.stdout.readline, b''):
            print ("-- " + line.rstrip())
        print "Exiting " + self.name

    def stop(self):
        print "Trying to stop thread "
        self.run = False

thr = My_Thread()
thr.start()
time.sleep(30)
thr.stop()
thr.join()

Also habe ich Thread wie oben gezeigt, arbeite tatsächlich an Windows und process.sh ist ein Bash-Skript, das in Cygwin ausgeführt wird und ungefähr 5 Minuten benötigt, um die Ausführung zu beenden

Ich möchte die stop () - Funktion in dieser Klasse erstellen, damit ich das Skript sofort beenden kann, wenn ich möchte. Nach Beendigung erwarte ich kein nützliches Ergebnis von process.sh Skript

Bitte können Sie eine Methode vorschlagen. Wenn möglich, geben Sie auch eine kleine Erklärung.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage