Ich habe eine Funktion:Thema friert Programm
def threaded(fn):
def wrapper(*args, **kwargs):
thread = threading.Thread(target=fn, args=args, kwargs=kwargs)
thread.start()
return thread
return wrapper
Und eine Klasse:
class someclass(somestuff):
def __init__(self, parent=None):
super(thing)
.
.
.
@threaded
def start_thread(self):
while True:
self.update_watchers()
def update_watchers(self):
.
.
.
def otherfunctions(self):
.
.
.
.
Und in meinem Haupt:
obj = someclass()
handle = obj.start_thread()
handle.join()
Nun, wenn ich nehme die while
Schleife aus von start_thread
, alles funktioniert gut. Ich vermute, dass ich forever-threads lang benutze (ein forever Thread ist natürlich ein Thread, der so lange läuft, wie das Programm läuft, natürlich).
Als eine FYI belegt dieses Programm eine Liste. Keine Python-Liste, keine GUI-Liste. Es untersucht eine Datei, die ständig aktualisiert wird. update_watchers()
aktualisiert die Beobachter, die ich über die Datei laufen lasse, extrahiert Informationen, wenn (zum Beispiel) das Programm pausiert ist (was einer der vielen Gründe ist, warum ich einen Thread brauche).
Kann mir jemand erklären, was vor sich geht? Es bricht weiter, wenn ich die handle
Definition erreiche. Ich weiß, dass ich die While-Schleife falsch verwenden muss, und es gibt einen richtigen Weg, dies zu tun. Ich brauche start_thread, um die ganze Zeit zu laufen, weil ich update_watchers die ganze Zeit laufen lassen muss.
Ich kann wirklich mehr Code als das post.
Danke
Edit: threaded
Funktion von this post genommen
Sie haben zu viel Code gepostet und gleichzeitig nicht genug. Entpacken Sie ein minimales, aber vollständiges Beispiel, da Ihre Frage off-topic ist. –
Willst du was laufen lassen, während True: 'und dann diesen Thread irgendwo im Code stoppen? Wenn Sie möchten, dass dieser Thread vom Anfang bis zum Ende des Programms funktioniert, sollten Sie diesen Thread unterbrechen oder etwas wie [hier] machen (https://stackoverflow.com/a/36499538/4984268) – Iluvatar
@Iluvatar Vielen Dank! Genau das würde ich als nächstes nachschlagen! – user3026388