Ich habe ein ziemlich einfaches Programm, dass jede Aufgabe in der Taskq ausgeführt und etwas berechnet, sagen wir für 30 Sekunden. Diese Aufgabe läuft nicht in irgendeiner Art von while oder for-Schleife.Python - Stoppen einer lang laufenden Taskq Thread
def run(self):
while not self.stopper.is_set():
DO_MY_30_SECONDS_WORK(self)
self.task_done()
Nun vorausgesetzt, ich habe ein thread.event und dies kann überprüfen, bevor/nachdem die Aufgabe erledigt ist. Aber gibt es eine Möglichkeit, dem bereits laufenden Thread mitzuteilen, dass er die Ausführung stoppen oder beenden soll.
Ich hatte ein Problem wie Ihr letztes Jahr und verwendete SIGNALs, um das Problem zu behandeln. Sie können einen anderen Thread mit Ihrem Hauptthread starten und einen Zeitzähler im Hilfsthread starten. Wenn der Zähler endet, gibt er dem Hauptfaden ein Signal und tötet ihn, indem er Signale empfängt. Vielleicht möchten Sie [this] ansehen (https://pymotw.com/2/signal/) – cengineer
ist Ihre Aufgabe etwas Python-Code, oder ist es ein anderes Programm, das Sie mit 'subprocess' ausführen? – hansaplast
Es ist nur Python-Code, aber vielleicht mit Curl Calls .. – Jay