code: def progress(self):
          
          now = time()
          if now - self.last_progress_t > 1:
              self.last_progress_t = now
              if self.status:
                  self.uplink.status(self.status)
                  self.status = None
              self.__spill_counters()
              self.uplink.progress(self.progress_value)
              self.uplink.flush()
docs: \
          Report progress to the Java side.
  
          This needs to flush the uplink stream, but too many flushes can
          disrupt performance, so we actually talk to upstream once per second.