From d9192bd964519b585d6855d4c9723f4e23e3c3a1 Mon Sep 17 00:00:00 2001 From: ninghongbin <2409766686@qq.com> Date: Fri, 12 Sep 2025 20:30:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=95=E6=93=8E=E8=AE=A1=E7=AE=97=E8=B6=85?= =?UTF-8?q?=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/face.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/core/face.py b/core/face.py index d5c728b..5854371 100644 --- a/core/face.py +++ b/core/face.py @@ -27,7 +27,8 @@ _used_gpu_id = -1 # 使用的GPU ID(-1表示CPU) # 资源管理变量 _ref_count = 0 # 引擎引用计数(记录当前使用次数) -_last_used_time = 0 # 最后一次使用引擎的时间 +# 修复点1:初始值设为当前时间,避免未加载引擎时用0计算超时 +_last_used_time = time.time() _lock = threading.Lock() # 线程安全锁 _release_timeout = 8 # 闲置超时时间(秒) _is_releasing = False # 资源释放中标记 @@ -77,7 +78,7 @@ def select_best_gpu(preferred_gpus=[0, 1]): def _release_engine_resources(): """释放人脸引擎的所有资源(模型、特征库、GPU缓存等)""" - global _face_app, _is_releasing, _known_faces_embeddings, _known_faces_names + global _face_app, _is_releasing, _known_faces_embeddings, _known_faces_names, _last_used_time if not _face_app or _is_releasing: return @@ -131,6 +132,8 @@ def _release_engine_resources(): print(f"释放资源过程中出错: {e}") finally: _is_releasing = False + # 修复点2:释放完成后重置最后使用时间,避免下次加载时复用旧值 + _last_used_time = time.time() def _resource_monitor_thread(): @@ -150,7 +153,7 @@ def _resource_monitor_thread(): def load_model(prefer_gpu=True, preferred_gpus=[0, 1]): """加载人脸识别引擎及已知人脸特征库(默认优先用0号GPU)""" - global _face_app, _known_faces_embeddings, _known_faces_names, _using_gpu, _used_gpu_id + global _face_app, _known_faces_embeddings, _known_faces_names, _using_gpu, _used_gpu_id, _last_used_time # 启动后台监控线程(确保仅启动一次) if not _monitor_thread_running: @@ -189,6 +192,10 @@ def load_model(prefer_gpu=True, preferred_gpus=[0, 1]): # 准备模型(加载到指定设备) _face_app.prepare(ctx_id=ctx_id, det_size=(640, 640)) print("InsightFace引擎初始化完成") + + # 修复点3:引擎初始化成功后,立即更新“最后使用时间”(核心修复) + _last_used_time = time.time() + _debug_counter["engine_created"] += 1 print(f"引擎调试统计: {_debug_counter}")