我说我有两个并行的块循环。使用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一起打印输出。