<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def start(self):
 """ Start the periodic runner """

        if self._isRunning:
            return

        if self._cease.is_set():
            self._cease.clear()  # restart

        class Runner(threading.Thread):
            @classmethod
            def run(cls):
                nextRunAt = cls.setNextRun()

                while not self._cease.is_set():
                    if datetime.now() >= nextRunAt:
                        self._run()
                        nextRunAt = cls.setNextRun()

            @classmethod
            def setNextRun(cls):
                # return datetime.now() + timedelta(seconds=self._interval)
                return self._interval.nextRunAt()

        runner = Runner()
        runner.setDaemon(True)
        runner.start()
        self._isRunning = True