我正在做一个关于raspberry pi的机器人项目,在这个项目中,我需要一个附加到raspberry pi的摄像头中的帧,因此我从videocapture()
中提取帧,而不是在主程序中,并将帧保存在队列中。问题是,当我运行程序时,最初的CPU使用率是正常的,即pi的每个核心的CPU使用率最高为30-40,但过了一段时间后,一个核心的CPU使用率达到100%,而其他3个核心的CPU使用率低于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)
抱歉英语不好我不是英语母语。在
目前没有回答
相关问题 更多 >
编程相关推荐