code: def _run_loop(self, session):
          
          try:
              first_prompt = True
  
              # Set up the prompt
              prompt = (
                  self._readline_prompt
                  if readline is not None
                  else self._normal_prompt
              )
  
              while not self._stop_event.is_set():
                  # Wait for the shell to be there
                  # Before Python 2.7, wait() doesn't return a result
                  if self._shell_event.wait(.2) or self._shell_event.is_set():
                      # Shell present
                      if first_prompt:
                          # Show the banner on first prompt
                          sys.stdout.write(self._shell.get_banner())
                          first_prompt = False
  
                      # Read the next line
                      line = prompt()
  
                      with self._lock:
                          if self._shell_event.is_set():
                              # Execute it
                              self._shell.execute(line, session)
  
                          elif not self._stop_event.is_set():
                              # Shell service lost while not stopping
                              sys.stdout.write("Shell service lost.")
                              sys.stdout.flush()
          except (EOFError, KeyboardInterrupt, SystemExit):
              # Input closed or keyboard interruption
              pass
docs: Runs the main input loop
  
          :param session: Current shell session