From d16e8b32eeb0ab2b900c64df2e9c126084faf107 Mon Sep 17 00:00:00 2001 From: imSp4rky Date: Fri, 7 Aug 2026 11:39:13 -0600 Subject: [PATCH] fix(downloader): report rolling speed on the multiprocess progress bar The parent computed a cumulative average since batch start while every other path shows a SpeedWindow rolling rate, so the MP bar lagged and read differently; use the same rolling window. --- unshackle/core/downloaders/requests.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/unshackle/core/downloaders/requests.py b/unshackle/core/downloaders/requests.py index d424cba1..2b87c847 100644 --- a/unshackle/core/downloaders/requests.py +++ b/unshackle/core/downloaders/requests.py @@ -1065,6 +1065,7 @@ def _download_multiprocess( total_bytes = 0 start_time = time.time() last_speed_report = start_time + speed_window = SpeedWindow(start_time) done_count = 0 dead_ticks = 0 @@ -1118,9 +1119,9 @@ def _download_multiprocess( now = time.time() if now - last_speed_report > 0.5 and total_bytes > 0: - elapsed = now - start_time - if elapsed > 0: - yield dict(downloaded=f"{filesize.decimal(math.ceil(total_bytes / elapsed))}/s") + rate = speed_window.rate(now, total_bytes) + if rate: + yield dict(downloaded=f"{filesize.decimal(math.ceil(rate))}/s") last_speed_report = now except KeyboardInterrupt: DOWNLOAD_CANCELLED.set()