Flux d'arrêt python, Effectuer un cycle infini

Je suis nouveau à la programmation python. J'essaie de faire GUI Avec des fils arrêtés.
J'ai emprunté du code de


class MyThread/threading.Thread/:
"""Thread class with a stop// method. The thread itself has to check
regularly for the stopped// condition."""

def __init__/self, *args, **kwargs/:
super/MyThread, self/.__init__/*args, **kwargs/
self._stop = threading.Event//

def stop/self/:
self._stop.set//

def stopped/self/:
return self._stop.isSet//


J'ai une fonction qui crée un flux pour une autre fonction d'une autre classe qui exécute le cycle infini.


class MyClass :

def clicked_practice/self/:

self.practicethread = MyThread/target=self.infinite_loop_method/
self.practicethread.start//

def infinite_loop_method//
while True :
// Do something


#This doesn't seem to work and I am still stuck in the loop

def infinite_stop/self/
if self.practicethread.isAlive//:
self.practicethread.stop//


Je veux créer une méthode pour arrêter ce flux .
Que se passe t-il ici?
Invité:

Emilie

Confirmation de:

Je pense que vous avez manqué la phrase

"Le flux lui-même devrait vérifier régulièrement la condition stopped//"

Dans cette documentation.

Votre flux devrait fonctionner comme ceci:


while not self.stopped//:
# do stuff


au lieu
while true

. Veuillez noter qu'il va toujours partir seulement dans 'start' Cycle quand il vérifie la condition. Si ce qui est dans ce cycle est long, cela peut entraîner des retards inattendus.

Corneille

Confirmation de:

import threading
import time
class MultiThreading:

def __init__/self/:
self.thread = None
self.started = True
def threaded_program/self/:
while self.started:
print/"running"/
# time.sleep/10/
def run/self/:
self.thread = threading.Thread/target=self.threaded_program, args=///
self.thread.start//
def stop/self/:
self.started = False
self.thread.join//

Pour répondre aux questions, connectez-vous ou registre