Python多线程两个并行循环

时间:2018-04-12 02:58:47

标签: python raspberry-pi

我说我有两个并行的块循环。使用python并行运行它们的最佳方法是什么。目前我正在尝试使用以下程序进行多线程

#!/usr/bin/env python
import time
import serial
import os
from threading import Thread

ser = serial.Serial(port='/dev/ttyUSB0', baudrate=38400, timeout=None)

ser.flushInput()
ser.flushOutput()

def getstrings(port):
    buf = bytearray()
    while True:
        b = port.read(1)
        if b == b'\x02':
            del buf[:]
        elif b == b'\x03':
            yield buf.decode('ascii')
        else:
            buf.append(b)

def tester():
    while 1:
        print('testing')

def values():
    count = ""
    tem = ""
    hv = ""
    counti = 0
    temi = 0
    hvi = 0

    while 1:
        for item in getstrings(ser):

        #if len(item) >= 10:
         #   continue

            if item[1] == "C":
                count = item.split('C')[1]
                counti=int(count[0:5])


            if item[1] == "T":
                tem = item.split('T')[1]     
                temi=int(tem[0:5])

            if item[1] == "H":
                hv = item.split('H')[1]
                hvi = int(hv[0:5])/10

            print ("HV="+str(hvi)+" "+"Count="+str(counti)+" "+"Temp="+str(temi))

t1 = Thread(target=values)
t2 = Thread(target=tester)
t1.start()
t2.start()

只有第二个线程有效。它不会从第二个打印值。这是我第一次尝试多线程。有一次,我明白这将如何运作,然后我打算用它来设计一个使用Tkinter库的GUI。我想在Tkinter主循环中使用我的程序循环。我可能会犯错的任何建议。

更新

是的,线程2不是线程1.我的错误很抱歉。但是,如果我评论t1.start()t2.start(),则两个线程都会有效。但是,只有线程2一起打印输出。

0 个答案:

没有答案