def update(self, bins, increment=1):
self.duration = datetime.timedelta(seconds=time.monotonic() - self.started_at)
self.updates += increment
start = min([x[0] for x in bins])
endin = max([x[1] for x in bins])
percent_start = ((start - self._start) / float(self.totalrange))
percent_endin = ((endin - self._start) / float(self.totalrange))
filledStart = int(round(self.columns * percent_start))
filledEndin = int(round(self.columns * percent_endin))
percent = sum([filledStart, filledEndin]) / 2
if not self.logger.isEnabledFor(logging.WARNING):
return
if self.logger.isEnabledFor(logging.INFO):
self.logger.info("{s.prelude} consider time range {start}-{endin} = {percent:.1f}% {s.updates} {s.suffix} ({s.duration} elapsed)".format(s=self, start=start, endin=endin, bin=bin, percent=percent))
return
if filledStart == filledEndin:
filledEndin = max(self.columns, filledEndin + 1) # clamp
bar = '-' * filledStart + '=' * (filledEndin - filledStart) + '-' * (self.columns - filledEndin)
out = "\r{s.prelude} [{bar}] {percent:.1f}% {s.updates} {s.suffix} ({duration} elapsed)".format(bar=bar, s=self, percent=percent, duration=humanize.naturaldelta(self.duration))
self.longest_line = max(self.longest_line, len(out))
sys.stdout.write(out)
sys.stdout.write(" " * (len(out) - self.longest_line)) # white out over remaining characters from previous line
sys.stdout.flush()
评论列表
文章目录