| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- """
- Model Cleanup Hook - 轻量级模型清理事件采集 hook
- 该模块提供与 fileLoc 侧 model cleanup 事件收集的接口。
- 当 fileLoc 未安装时,该模块为空操作,不影响主流程。
- 被 BaseAdapter.cleanup() (通过 monkey patch 拦截) 调用,侵入量:2行。
- """
- import threading
- from datetime import datetime
- from typing import Dict, Any, List, Optional
- # 线程安全存储
- _cleanup_events: List[Dict[str, Any]] = []
- _cleanup_lock = threading.Lock()
- def on_cleanup(adapter_name: str, model_name: str, cleanup_type: str) -> None:
- """
- 模型清理回调 - 被 BaseAdapter.cleanup() 调用
- Args:
- adapter_name: 适配器名称 (如 "MinerUAdapter")
- model_name: 模型名称 (如 "layout_detector")
- cleanup_type: 清理类型 ("start" 或 "end")
- """
- if not adapter_name or not model_name:
- return
- if cleanup_type not in ("start", "end"):
- return
- event = {
- 'adapter_name': adapter_name,
- 'model_name': model_name,
- 'cleanup_type': cleanup_type,
- 'timestamp': datetime.now().isoformat()
- }
- with _cleanup_lock:
- _cleanup_events.append(event)
- def get_cleanup_events() -> List[Dict[str, Any]]:
- """
- 获取所有清理事件 (供 fileLoc 调用)
- Returns:
- 清理事件列表
- """
- with _cleanup_lock:
- return list(_cleanup_events)
- def clear_cleanup_events() -> None:
- """清除所有清理事件"""
- with _cleanup_lock:
- _cleanup_events.clear()
|