code: def _idle_loop(self):
          
          while not self._stop_update_flag:
              time.sleep(self.update_interval)
              with self.update_lock:
                  try:
                      self.idle()
                  except:
                      self._log.error("exception in App.idle method", exc_info=True)
                  if self._need_update_flag:
                      try:
                          self.do_gui_update()
                      except:
                          self._log.error('''exception during gui update. It is advisable to 
                              use App.update_lock using external threads.''', exc_info=True)
docs: This is used to exec the idle function in a safe context and a separate thread