将任务加入评测队列。当队列达到 batch_size 时自动触发批量评测。 使用锁确保同一时间只有一个 task 入队列。 Args: task: 已完成推理的任务 Returns: 是否触发了批量评测
(self, task: Task)
| 979 | logger.info(f"| 💾 [Task {task.task_id}] Error result saved directly (prediction: {prediction})") |
| 980 | |
| 981 | async def queue_for_eval(self, task: Task) -> bool: |
| 982 | """ |
| 983 | 将任务加入评测队列。当队列达到 batch_size 时自动触发批量评测。 |
| 984 | 使用锁确保同一时间只有一个 task 入队列。 |
| 985 | |
| 986 | Args: |
| 987 | task: 已完成推理的任务 |
| 988 | |
| 989 | Returns: |
| 990 | 是否触发了批量评测 |
| 991 | """ |
| 992 | async with self._queue_lock: |
| 993 | self._pending_queue.append(task) |
| 994 | queue_size = len(self._pending_queue) |
| 995 | |
| 996 | # 实时打印队列状态 |
| 997 | print(f"\r📊 Queue: {queue_size}/{self.batch_size} tasks", end="", flush=True) |
| 998 | logger.info(f"| 📥 [Task {task.task_id}] Added to queue ({queue_size}/{self.batch_size})") |
| 999 | |
| 1000 | # 当队列达到 batch_size 时,自动触发批量评测 |
| 1001 | if queue_size >= self.batch_size: |
| 1002 | print() # 换行 |
| 1003 | await self.flush_eval_queue() |
| 1004 | return True |
| 1005 | return False |
| 1006 | |
| 1007 | async def flush_eval_queue(self) -> List[Task]: |
| 1008 | """ |
no test coverage detected