优化性能

This commit is contained in:
Tian jianyong 2025-12-28 15:27:21 +08:00
parent f1080cca23
commit 1bf393d01e

View File

@ -1440,6 +1440,8 @@ class FaceRecognitionSystem:
self.logger.error(f"处理WebSocket消息错误: {e}")
self.ws_connected = False
break
await asyncio.sleep(0.01) # 短暂延迟,避免 CPU 空转
except Exception as e:
self.logger.error(f"WebSocket消息处理任务异常: {e}")
self.ws_connected = False
@ -1551,14 +1553,32 @@ class FaceRecognitionSystem:
stream_check_counter = 0
stream_check_interval = 150 # 每150帧约5秒检查一次
# 帧率控制
target_fps = 30
frame_interval = 1000 // target_fps # 每帧间隔毫秒
last_frame_time = time.time() * 1000
# 清理定时控制
last_cleanup_time = time.time()
# 添加人脸消失计数器
no_face_counter = 0
no_face_threshold = 30 # 连续30帧约1秒没有检测到人脸才清空
try:
while True:
# 定期清理过期记录,防止内存无限增长
self.cleanup_expired_records()
current_time = time.time()
# 每60秒清理一次过期记录防止内存无限增长
if current_time - last_cleanup_time >= 60:
self.cleanup_expired_records()
last_cleanup_time = current_time
# 帧率控制控制到约30fps
elapsed = time.time() * 1000 - last_frame_time
if elapsed < frame_interval:
await asyncio.sleep((frame_interval - elapsed) / 1000)
last_frame_time = time.time() * 1000
# 检查机器人角色并显示/隐藏视频
self._check_role_and_display_video()