class Process: def __init__(self): self.env = None self.__process = None def start(self, env, *args): self.env = env self.__process = env.process(self.process(*args)) def process(self, *args): raise NotImplementedError yield None class TickProcess(Process): def __init__(self, tick): super().__init__() if tick < 1: raise ValueError('tick must be greatert than or equal to 1') self._tick = tick def tick(self): return self.env.timeout(self._tick)