我的应用速度很慢
我的应用速度很慢
在紧密循环中使用 tryGet() 导致 CPU 使用率高
问题
Python
1while True:
2 queue.tryGet()tryGet() 是非阻塞的——无论帧是否准备好,它都会立即返回。 在紧密循环中,这意味着您的程序尽可能快地运行,将一个 CPU 核心占用至最大,并饿死其他线程或进程。修复方法
Python
1#!/usr/bin/env python3
2import depthai as dai
3import time
4with dai.Pipeline() as pipeline:
5 cam = pipeline.create(dai.node.Camera).build(
6 dai.CameraBoardSocket.CAM_A, sensorFps=19.0
7 )
8 rawQueue = cam.raw.createOutputQueue()
9 pipeline.start()
10 while pipeline.isRunning():
11 rawFrame = rawQueue.tryGet()
12 if rawFrame is not None:
13 print("Got a raw frame")
14 time.sleep(0.001) # prevents 100% CPU usageget() 而不是 tryGet()get() 会阻塞直到帧准备好,因此不会发生忙碌循环:Python
1#!/usr/bin/env python3
2import depthai as dai
3import time
4with dai.Pipeline() as pipeline:
5 cam = pipeline.create(dai.node.Camera).build(
6 dai.CameraBoardSocket.CAM_A, sensorFps=19.0
7 )
8 rawQueue = cam.raw.createOutputQueue()
9 pipeline.start()
10 while pipeline.isRunning():
11 rawFrame = rawQueue.get()
12 print("Got a raw frame")