在raspberry pi中,一个内核上的cpu使用率为100%

2024-05-19 16:34:53 发布

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

我正在做一个关于raspberry pi的机器人项目,在这个项目中,我需要一个附加到raspberry pi的摄像头中的帧,因此我从videocapture()中提取帧,而不是在主程序中,并将帧保存在队列中。问题是,当我运行程序时,最初的CPU使用率是正常的,即pi的每个核心的CPU使用率最高为30-40,但过了一段时间后,一个核心的CPU使用率达到100%,而其他3个核心的CPU使用率低于20%,这就减慢了程序的速度。在

我搜索了很多,但找不到任何相关的解决方案。我不知道问题是什么,是线程(pythonGIL问题)还是其他问题。 任何建议都会有帮助。在

这些都是摄像头模块中获取帧并保存在队列中的功能

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)

抱歉英语不好我不是英语母语。在


Tags: 项目self程序true核心returnif队列