J'ai un thread d'arrière-plan que les appels principaux, le thread d'arrière-plan peut ouvrir un certain nombre de scripts différents, mais parfois il obtiendra une boucle d'impression infinie comme ceci.Obtenir un thread pour quitter une boucle infinie (intentionnelle)?
Dans thing.py
import foo
def main():
thr = Thread(target=background)
thr.start()
thread_list.append(thr)
def background():
getattr(foo, 'bar')()
return
Et puis dans foo.py
def bar():
while True:
print("stuff")
C'est ce qu'il est censé faire, mais je veux être en mesure de le tuer quand je dois. Y a-t-il un moyen pour moi de tuer le thread d'arrière-plan et toutes les fonctions qu'il a appelé? J'ai essayé de mettre des drapeaux dans background
pour renvoyer quand le drapeau devient haut, mais background
n'est jamais capable de vérifier les drapeaux puisqu'il attend bar
pour retourner.
EDIT: foo.py est mon code, donc je suis hésité à le modifier, idéalement, je pouvais le faire sans modifier foo.py mais s'il est impossible d'éviter son accord
Copie possible de [Comment arrêter un thread en boucle en Python?] (Https://stackoverflow.com/questions/18018033/how-to-stop-a-looping-thread-in-python) – harandk