code: def periodic(self, period_seconds, callback):
          
          priority = 0
  
          def caller(scheduled_deadline):
              # Event MUST be re-registered first in order to ensure that it can be cancelled from the callback
              scheduled_deadline += period_seconds
              event_holder[0] = self._scheduler.enterabs(scheduled_deadline, priority, caller, (scheduled_deadline,))
              callback()
  
          first_deadline = self._scheduler.timefunc() + period_seconds
          event_holder = [self._scheduler.enterabs(first_deadline, priority, caller, (first_deadline,))]
          return self._make_sched_handle(lambda: event_holder[0])
docs: This method allows to invoke the callback periodically, with specified time intervals.
          Note that the scheduler features zero phase drift.
          :returns: EventHandle object. Call .remove() on it to cancel the event.