引擎计算超时

This commit is contained in:
2025-09-12 20:30:54 +08:00
parent 5ecbac0f9c
commit d9192bd964

View File

@ -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}")