1000 Stimmen

Gibt es eine Möglichkeit, einen Thread zu löschen?

Ist es möglich, einen laufenden Thread zu beenden, ohne irgendwelche Flags/Semaphoren/etc. zu setzen/zu überprüfen?

-2voto

DoXiD Punkte 285

Dies ist eine schlechte Antwort, siehe die Kommentare

Und so geht's:

from threading import *

...

for thread in enumerate():
    if thread.isAlive():
        try:
            thread._Thread__stop()
        except:
            print(str(thread.getName()) + ' could not be terminated'))

Warten Sie ein paar Sekunden, dann sollte Ihr Thread gestoppt werden. Prüfen Sie auch die thread._Thread__delete() Methode.

Ich würde empfehlen, eine thread.quit() Methode für Bequemlichkeit. Wenn Sie zum Beispiel einen Socket in Ihrem Thread haben, würde ich empfehlen, eine quit() Methode in Ihrer Socket-Handle-Klasse, beenden Sie den Socket und führen Sie dann eine thread._Thread__stop() im Inneren deines quit() .

-3voto

David Lador Punkte 19

Der einfachste Weg ist dieser:

from threading import Thread
from time import sleep

def do_something():
    global thread_work
    while thread_work:
        print('doing something')
        sleep(5)
    print('Thread stopped')

thread_work = True
Thread(target=do_something).start()
sleep(5)
thread_work = False

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X