| | |
| | | # 获取空闲的位置数量 |
| | | def get_free_queue_count(self): |
| | | return len(self.queue_list) - len(self.distibuted_code_queue_dict.keys()) |
| | | |
| | | # 回调对象分配 |
| | | class CodeDataCallbackDistributeManager: |
| | | # queue_list |
| | | def __init__(self, callback_list: list): |
| | | flist = [] |
| | | for callback in callback_list: |
| | | flist.append((id(callback), callback)) |
| | | self.callback_list = flist |
| | | self.distibuted_code_callback_dict = {} |
| | | |
| | | # 获取可用的队列 |
| | | def get_available_callback(self): |
| | | distibuted_callbacks_ids = set() |
| | | for code in self.distibuted_code_callback_dict: |
| | | distibuted_callbacks_ids.add(self.distibuted_code_callback_dict[code][0]) |
| | | for callback in self.callback_list: |
| | | if callback[0] not in distibuted_callbacks_ids: |
| | | return callback |
| | | return None |
| | | |
| | | # 为代码分配队列 |
| | | def distribute_callback(self, code): |
| | | if code in self.distibuted_code_callback_dict: |
| | | return self.distibuted_code_callback_dict.get(code) |
| | | callback_info = self.get_available_callback() |
| | | if not callback_info: |
| | | raise Exception("无可用的回调对象") |
| | | self.distibuted_code_callback_dict[code] = callback_info |
| | | return callback_info |
| | | |
| | | # 获取代码分配的队列 |
| | | def get_distributed_callback(self, code): |
| | | if code in self.distibuted_code_callback_dict: |
| | | return self.distibuted_code_callback_dict.get(code)[1] |
| | | else: |
| | | return None |
| | | |
| | | def release_distribute_callback(self, code): |
| | | if code in self.distibuted_code_callback_dict: |
| | | self.distibuted_code_callback_dict.pop(code) |
| | | |
| | | # 获取空闲的位置数量 |
| | | def get_free_queue_count(self): |
| | | return len(self.callback_list) - len(self.distibuted_code_callback_dict.keys()) |