我正在做一个关于覆盆子pi的机器人项目,其中我需要来自网络摄像头的帧,连接到覆盆子pi,不断让我从videocapture()
中提取帧而不是主程序并保存帧中的帧一个队列。问题在于,当我运行程序时,最初的CPU使用率是正常的,即pi的每个核心最大30-40,但是一段时间后,一个核心的CPU使用率达到100%而其他3个核心的使用率低于20%,这会减慢下来的程序。
我搜索了很多,但找不到任何相关的解决方案。我无法理解问题是什么,是线程(python
GIL
问题)还是其他问题。
任何建议都会有所帮助。
这些是相机模块中正在获取帧并保存在队列中的功能
self.framerate_ms = 1.0/float(20)
def start(self):
if self.t:
return
f = None
if self.camera_type == USB:
f = self.update_usb
self.t = Thread(target=f, args=())
#self.t.daemon = True
self.t.start()
def update_usb(self):
while True:
if self.stopped:
return
(grabbed, frame) = self.camera.read()
if not grabbed:
self.stop()
return
if self.Q.full():
self.Q.get()
self.Q.put(frame)
self.ready = True
#sleep(self.framerate_ms)
抱歉抱怨英语不好我不是母语为英语的人。