Starts executing the method at the specified interval.

    Args:
      interval_s: The amount of time between executions of the method.
    Returns:
      False if the interval was already running.

def start(self, interval_s):
    """Starts executing the method at the specified interval.

    Args:
      interval_s: The amount of time between executions of the method.
    Returns:
      False if the interval was already running.
    """
    if self.running:
      return False

    self.stopped.clear()

    def _execute():
      # Always execute immediately once
      if not self.method() and self.stop_if_false:
        return
      while not self.stopped.wait(interval_s):
        if not self.method() and self.stop_if_false:
          return

    self.thread = threading.Thread(target=_execute)
    self.thread.daemon = True
    self.thread.start()
    return True