""" 代码队列管理 """ class CodeQueueDistributeManager: # queue_list def __init__(self, queue_list: list): flist = [] for i in range(0, len(queue_list)): flist.append((i, queue_list[i])) self.queue_list = flist self.distibuted_code_queue_dict = {} # 获取可用的队列 def get_available_queue(self): distibuted_queue_indexes = set() for code in self.distibuted_code_queue_dict: distibuted_queue_indexes.add(self.distibuted_code_queue_dict[code][0]) for q_info in self.queue_list: if q_info[0] not in distibuted_queue_indexes: return q_info return None # 为代码分配队列 def distribute_queue(self, code): if code in self.distibuted_code_queue_dict: return self.distibuted_code_queue_dict.get(code) q_info = self.get_available_queue() if not q_info: raise Exception("无可用的队列") self.distibuted_code_queue_dict[code] = q_info return q_info # 获取代码分配的队列 def get_distributed_queue(self, code): return self.distibuted_code_queue_dict.get(code) def release_distribute_queue(self, code): if code in self.distibuted_code_queue_dict: self.distibuted_code_queue_dict.pop(code) # 获取空闲的位置数量 def get_free_queue_count(self): return len(self.queue_list) - len(self.distibuted_code_queue_dict.keys())