import heurams.kernel.particles as pt from .states import PhaserState, ProcessionState class Procession: """队列: 标识单次记忆流程""" def __init__(self, atoms: list, phase: PhaserState, name: str = ""): self.atoms = atoms self.queue = atoms.copy() self.current_atom = atoms[0] self.cursor = 0 self.name = name self.phase = phase self.state: ProcessionState = ProcessionState.RUNNING def forward(self, step=1): self.cursor += step if self.cursor == len(self.queue): self.state = ProcessionState.FINISHED else: self.state = ProcessionState.RUNNING try: print(self.cursor) self.current_atom = self.queue[self.cursor] return 1 # 成功 except IndexError as e: #print(f"{e}") self.state = ProcessionState.FINISHED return 0 def append(self, atom=None): if atom == None: atom = self.current_atom if self.queue[len(self.queue) - 1] != atom or len(self) <= 1: self.queue.append(atom) def __len__(self): return len(self.queue) - self.cursor def process(self): return self.cursor def total_length(self): return len(self.queue) def is_empty(self): return len(self.queue)