У меня есть куча кода, и я прилагаю здесь кусок. В принципе у меня есть нить, - которая ориентирована на функции - которая имеет время цикла следующим образом:Queue-Multi Threading Python
while not stop_event.wait(1): # Continuous Reading Function
#print "hello2"
#print ("working on %s" % arg)
data1 = Read(soa1, bytes1, ser)
data2 = Read(soa2, bytes2, ser)
data3 = Read(soa3, bytes3, ser)
data = np.concatenate([data1, data2, data3])
print data.size
queue_read.put(data)
time.sleep(1)
Я чтение данных из MCU, через последовательный канал связи в этой теме и отправить его обратно к моему главному program - используя queue_read.put (данные). Это происходит каждые 1 секунду.
В моей основной программе я читаю выход из этого потока, как ---
self.data = queue_read.get()
Через пять минут значения в MCU намеренно изменены. Во время изменения этот поток все еще работает, поскольку он находится в цикле while.
Итак, после пяти минут переменная «данные» должна иметь обновленные новые значения из MCU. Но, к моему удивлению, это не так. Он все еще имеет начальные значения. Здесь что-то не хватает? Использует ли очередь, правильный способ получить данные?
'Queue' идеально подходит для производителей/потребительских потоков. Но нам нужно увидеть, что «введите код здесь» находится в OP, чтобы помочь –
@CraigBurgler. Я редактировал вопрос. Проблема заключается в self.data или переменная «данные» не обновляется, потому что, как только моя основная программа прошла через строку кода self.data = queue_read.get(), она не будет читать снова. Поэтому мне интересно, как я должен постоянно читать данные из потока и обновлять свой графический интерфейс –
, пожалуйста, см. Мой ответ –