[Yum-devel] [PATCH] Improve multi-file progress meter
Zdeněk Pavlas
zpavlas at redhat.com
Tue Aug 7 12:51:30 UTC 2012
Updates arrive evenly to all active files, but we check their timestamps
against shared last_update_time. When we get past that check, the 'meter'
argument to MultiFileMeter._do_update_meter() is meaningless.
This patch cycles 'meter' through all active child meter objects.
This seems to give much better output (parallel downloading is visible).
---
urlgrabber/progress.py | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/urlgrabber/progress.py b/urlgrabber/progress.py
index 9888bef..3466e1a 100644
--- a/urlgrabber/progress.py
+++ b/urlgrabber/progress.py
@@ -493,6 +493,7 @@ class TextMultiFileMeter(MultiFileMeter):
def __init__(self, fo=sys.stderr, threaded=True):
self.fo = fo
MultiFileMeter.__init__(self, threaded)
+ self.index = 0
# files: ###/### ###% data: ######/###### ###% time: ##:##:##/##:##:##
# New output, like TextMeter output...
@@ -527,9 +528,13 @@ class TextMultiFileMeter(MultiFileMeter):
frac = self.re.fraction_read() or 0
ave_dl = format_number(self.re.average_rate())
+
+ # cycle through active meters
+ self.index = (self.index + 1) % len(self.meters)
+ meter = self.meters[self.index]
text = meter.text or meter.basename
if tf > 1:
- text = '(%u/%u): %s' % (df+1, tf, text)
+ text = '(%u/%u): %s' % (df+1+self.index, tf, text)
# Include text + ui_rate in minimal
tl = TerminalLine(8, 8+1+8)
--
1.7.4.4
More information about the Yum-devel
mailing list