diff --git a/news/5124.trivial b/news/5124.trivial new file mode 100644 index 000000000..bc0a19b87 --- /dev/null +++ b/news/5124.trivial @@ -0,0 +1 @@ +Limit progress bar update interval to 200 ms. diff --git a/src/pip/_internal/utils/ui.py b/src/pip/_internal/utils/ui.py index 6bab904ab..4a337241d 100644 --- a/src/pip/_internal/utils/ui.py +++ b/src/pip/_internal/utils/ui.py @@ -137,6 +137,7 @@ class DownloadProgressMixin(object): def __init__(self, *args, **kwargs): super(DownloadProgressMixin, self).__init__(*args, **kwargs) self.message = (" " * (get_indentation() + 2)) + self.message + self.last_update = 0.0 @property def downloaded(self): @@ -161,6 +162,15 @@ class DownloadProgressMixin(object): self.next(n) self.finish() + def update(self): + # limit updates to avoid swamping the TTY + now = time.time() + if now < self.last_update + 0.2: + return + self.last_update = now + + super(DownloadProgressMixin, self).update() + class WindowsMixin(object):