J'essaye de créer une sorte de classe non-bloquante en python, mais je ne sais pas comment. Je voudrais qu'une classe soit elle-même un thread, détaché du thread principal pour que les autres threads puissent interagir avec lui.Classe non-bloquante en python (Thread détaché)
Dans un petit exemple:
#!/usr/bin/python2.4
import threading
import time
class Sample(threading.Thread):
def __init__(self):
super(Sample, self).__init__()
self.status = 1
self.stop = False
def run(self):
while not(self.stop):
pass
def getStatus(self):
return self.status
def setStatus(self, status):
self.status = status
def test(self):
while self.status != 0:
time.sleep(2)
#main
sample = Sample()
sample.start()
sample.test()
sample.setStatus(0)
sample.stop()
Ce que je voudrais est d'avoir l'instance « exemple » en cours d'exécution comme un thread séparé (détaché du principal) si, dans l'exemple, lorsque le fil conducteur atteint sample.test(), sample (et seulement "sample") irait dormir pendant 2 secondes. Pendant ce temps, le thread principal continuerait son exécution et placerait l'état de l'échantillon à 0. Quand au bout de 2 secondes "sample" se réveillerait, il verrait l'état = 0 et quitterait la boucle while.
Le problème est que si je fais cela, la ligne sample.setStatus (0) n'est jamais atteinte (créant une boucle infinie). J'ai nommé les threads, et il s'avère que, ce faisant, test() est exécuté par le thread principal.
Je suppose que je ne comprends pas le filetage en python qui fonctionnent bien ...
Merci à l'avance
Oh, sh ** t ... Je vois ... Alors je dois changer la façon dont je pensais ... Merci! – BorrajaX