code: def run(self):
          
          last_status = ''
          # lambda is used to avoid http://bugs.python.org/issue30473 in py36
          start_times = defaultdict(lambda: datetime.datetime.now())
          max_stage_id = -1
  
          status = self.sc.statusTracker()
          while True:
              with self.condition:
                  if self.sc._jsc is None or not self.alive:
                      # End the thread
                      self.paused = True
                      break
                  elif self.paused:
                      # Pause the thread
                      self.condition.wait()
              stage_ids = status.getActiveStageIds()
              progressbar_list = []
              # Only show first 3
              stage_counter = 0
              current_max_stage = max_stage_id
              for stage_id in stage_ids:
                  stage_info = status.getStageInfo(stage_id)
                  if stage_info and stage_info.numTasks > 0:
                      # Set state variables used for flushing later
                      current_max_stage = stage_id
                      stage_counter += 1
                      td = datetime.datetime.now() - start_times[stage_id]
                      s = _format_stage_info(self.bar_width, stage_info, td, self.timedelta_formatter)
                      progressbar_list.append(s)
                  if stage_counter == 3:
                      break
  
              # Ensure that when we get a new maximum stage id we print a \n
              # to make the progress bar go on to the next line.
              if current_max_stage > max_stage_id:
                  if last_status != '':
                      sys.stderr.write("\n")
                  sys.stderr.flush()
                  max_stage_id = current_max_stage
  
              new_status = ' '.join(progressbar_list)
              if new_status != last_status:
                  sys.stderr.write("\r" + new_status)
                  sys.stderr.flush()
                  last_status = new_status
              time.sleep(self.sleep_time)
docs: Run the progress printing loop.