Я пытаюсь создать своего рода неблокирующий класс в python, но я не уверен, как.
Я бы хотел, чтобы класс был самим потоком, отделенным от основного потока.так что другие потоки могут взаимодействовать с ним.
В небольшом примере:
#!/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()
Мне бы хотелось, чтобы экземпляр «sample» работал как отдельный поток (отсоединенный от основного1) так, в примере, когда основной поток достигает sample.test (), sample (и только «sample») перейдет в спящий режим на 2 секунды.В то же время основной поток продолжит свое выполнение и установит состояние семпла в 0. Когда через 2 секунды пробуждается «семпл», он увидит состояние = 0 и выйдет из цикла while.
Проблема в том, что если я сделаю это, строка sample.setStatus (0) никогда не будет достигнута (создавая бесконечный цикл).Я назвал потоки, и оказалось, что, выполняя это, test () запускается основным потоком.
Полагаю, я не очень хорошо понимаю потоки в python ...
Заранее спасибо