class InferenceThreadPool: def init(self, worker_count): self.worker_count = worker_count self.task_queue = Queue() # 任务队列:待处理的推理请求 self.workers = [] def submit(self, task_fn, *args): self.task_queue.put((task_fn, args)) def start(self): for i in range(self.worker_count): t = threading.Thread(target=self._worker, args=(i,)) t.daemon = True self.workers.append(t) t.start() def _worker(self, idx): while True: if self.task_queue.empty(): break task_fn, args = self.task_queue.get() task_fn(*args) self.task_queue.task_done() time.sleep(0.01) # 模拟切换开销 def wait_completion(self): self.task_queue.join() def ai_inference(task_id): latency = random.uniform(0.05, 0.2) # 模拟推理耗时50-200ms time.sleep(latency) print(f"task_{task_id} done in {latency:.3f}s") if name == "main“: pool = InferenceThreadPool(worker_count=4) # 4个厨师同时干活 for i in range(10): pool.submit(ai_inference, i) pool.start() pool.wait_completion() print(”All inference tasks finished.") ```
代码用途:用 Python 的 threading 和 queue 实现一个最简线程池,模拟 4 个工作线程并发处理 10 个 AI 推理任务,演示线程池复用线程、队列缓冲任务的核心机制。