From d9b4ecfe7b542a00fd8e890fdfac173f319cbdab Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Tue, 13 Aug 2019 23:46:20 +0100 Subject: [PATCH] better auto-closing TqdmThreadPoolExecutor --- dvc/progress.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/dvc/progress.py b/dvc/progress.py index bb7b02fa1..def8fd4ec 100644 --- a/dvc/progress.py +++ b/dvc/progress.py @@ -13,15 +13,19 @@ class TqdmThreadPoolExecutor(ThreadPoolExecutor): def __enter__(self): """ - Creates a blank initial dummy progress bar so that workers are forced - to create "nested" bars. + Creates a blank initial dummy progress bar if needed so that workers are + forced to create "nested" bars. """ - self.blank_bar = Tqdm(bar_format="Multi-Threaded:", leave=False) + blank_bar = Tqdm(bar_format="Multi-Threaded:", leave=False) + if blank_bar.pos > 0: + # already nested - don't need a placeholder bar + blank_bar.close() + self.bar = blank_bar return super(TqdmThreadPoolExecutor, self).__enter__() def __exit__(self, *a, **k): super(TqdmThreadPoolExecutor, self).__exit__(*a, **k) - self.blank_bar.close() + self.bar.close() class Tqdm(tqdm):