队列 - 多线程Python

时间:2016-09-01 14:32:10

标签: python multithreading variables queue pyserial

我有一堆代码,我在这附加一块。基本上我有一个线程 - 它针对一个函数 - 有一个while循环如下:

        ID NAME            AGE
---------- -------- ----------
         1 BUNNY            23
         2 CHANIKYA         24
         3 DEERAJ           24
         4 KAVITHA          25
         5 LAVANYA          26
         6 SRUJAN           28
         7 VINEETH          29

 7 rows selected 

我正在从MCU读取数据,通过该线程中的串行通信并将其发送回我的主程序 - 使用queue_read.put(data)。这是每1秒运行一次。

在我的主程序中,我正在读取此线程的输出为---

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中的值。在更改期间,此线程仍然在while循环中运行。

因此,五分钟后,变量“data”应该具有来自MCU的更新的新值。但令我惊讶的是,事实并非如此。它仍然具有初始值。这里有什么我想念的吗?是使用队列,获取数据的正确方法吗?

1 个答案:

答案 0 :(得分:0)

以下方法可以连续地从队列中读取和处理数据,这样您就可以在数据发生变化时查看和响应数据:

while True:
    self.data = queue_read.get()
    self.update_GUI() 
如果queue_read.get()为空,则

queue_read阻止。如果主线程除了更新GUI之外还执行任何操作,则需要在自己的线程中运行此代码。