def __init__(self, pin_config=None, *args, **kwargs): #threading.Thread.__init__(self, *args, **kwargs) super(BaseRPiAgent, self).__init__(*args, **kwargs) self.pins = BaseRPiPinConfig(cleanup=True) if pin_config is None else pin_config self.should_run = True self.routine = None self.set_routine_settings() self.running_time = 0
class BaseRPiAgent(threading.Thread): def __init__(self, pin_config=None, *args, **kwargs): #threading.Thread.__init__(self, *args, **kwargs) super(BaseRPiAgent, self).__init__(*args, **kwargs) self.pins = BaseRPiPinConfig(cleanup=True) if pin_config is None else pin_config self.should_run = True self.routine = None self.set_routine_settings() self.running_time = 0 def set_routine_settings(self): """Initialize routine settings to defaults """ self.routine_settings = DEFAULT_ROUTINE_SETTINGS def run(self): print 'Running %s' % (self.__class__.__name__,) while self.should_run: self.execute_routine() # CYCLE_SLEEP_DURATION expresed in milliseconds to prevent rounding errors sleep(CYCLE_SLEEP_DURATION / 1000.) self.running_time += CYCLE_SLEEP_DURATION def get_routine(self): routine = self.routine if hasattr(self, 'routine') else None return routine def execute_routine(self): """Abstract method """ pass def terminate(self): self.should_run = False # routine = self.get_routine() # if routine: # while False and routine.is_alive(): # print 'Waiting for children threads to die...' # sleep(1) print 'Cleaning up...' self.pins.cleanup()