Entschuldigung für die alte Frage. Ich habe es geklärt. Wie kann ich einen Stop-Thread mit meiner schlechten Thread-Klasse starten?
BEARBEITEN : Es ist in Schleife, ich möchte es am Anfang des Codes neu starten. Wie kann ich Start-Stopp-Neustart-Stopp-Neustart?
Meine Klasse:
%Vor%Im Hauptcode möchte ich:
%Vor% Sie können einen Thread nicht stoppen und neu starten, da Sie% code_% nicht mehr aufrufen können, nachdem die Methode start()
beendet wurde. Sie können die Methode jedoch effektiv anhalten und die Ausführung später fortsetzen, indem Sie eine run()
-Variable verwenden, um Nebenläufigkeitsprobleme beim Überprüfen oder Ändern des Ausführungsstatus zu vermeiden.
threading.Condition
-Objekte haben ein zugeordnetes Condition
-Objekt und Methoden, um darauf zu warten, dass es freigegeben wird, und werden alle wartenden Threads benachrichtigen, wenn dies auftritt. Hier ist ein Beispiel aus dem Code in Ihrer Frage, das zeigt, dass dies getan wird. In diesem Fall habe ich die threading.Lock
-Variable zu einem Teil von Condition
-Unterklasseninstanzen gemacht, um die Implementierung besser zu kapseln, indem die Einführung zusätzlicher globaler Variablen vermieden wird:
Die Implementierung von stop()
würde folgendermaßen aussehen:
Wenn Sie neu starten möchten, können Sie einfach eine neue Instanz erstellen und diese starten.
%Vor% Die Dokumentation für Thread
macht deutlich, dass start()
Methode kann nur einmal für jede Instanz der Klasse aufgerufen werden.
Wenn Sie einen Thread pausieren und fortsetzen möchten, müssen Sie eine Bedingung verwenden Variable .
Tags und Links python multithreading