程序中的第二个线程未被执行

2024-05-16 00:10:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的初学者。我在程序中学习并应用了多线程,但只执行了一个线程

该程序是关于调用函数,该函数使用超声波传感器返回距离值,并使用时间戳保存来自网络摄像头的视频帧。我已经尝试过不使用线程的代码,它工作得很好,但是由于距离测量所花费的时间,帧数减少了,所以我想在python中使用多线程并行执行它们

import threading
import thread
video = cv2.VideoCapture(0)
class u1Thread(threading.Thread):
      def run(self): 
         TRIG1=23                            #Associate pin 23 to TRIG
         ECHO1=24                            #Associate pin 24 to ECHO
         GPIO.setup(TRIG1,GPIO.OUT)          #Set pin as GPIO out
         GPIO.setup(ECHO1,GPIO.IN)           #Set pin as GPIO in
         U_1=[]
         start=[]
         while True:
            d=ultrasonic(TRIG1,ECHO1)
            U_1.append(d)
            start.append(str(time.time()))
            x=pd.DataFrame({'1st':U_1,  'Time Stamp':start})
            export_csv = x.to_csv (r'/home/pi/q.csv', index = None, 
            header=True)


 class vfThread(threading.Thread):
       def run(self):
       ret, frame=video.read()
       if ret == True:  
          cv2.imwrite(str(time.time()) + '.jpg',frame)   


U1=u1Thread()
VF=vfThread()


U1.run()
VF.run()  

我希望两个线程都执行,但只执行第一个线程


Tags: csvtorun程序true距离gpiotime
1条回答
网友
1楼 · 发布于 2024-05-16 00:10:19

U1.start()VF.start()代替run

run在不启动新线程的情况下执行代码,因此,程序卡在while循环中

start启动一个线程并在其中执行run。两个线程同时运行

相关问题 更多 >