#!/usr/bin/env python # Print iterations progress def printProgressBar (iteration:int, total:int, prefix:str = '', suffix:str = '', decimals:int = 1, length:int = 100, fill:str = '█', printEnd:str = "\r"): """Print iterations progress. Call in a loop to create terminal progress bar. - current iteration - total iterations - prefix string - suffix string - positive number of decimals in percent complete - character length of bar - bar fill character - end character (e.g. "\r", "\r\n") """ percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total))) filledLength = int(length * iteration // total) bar = fill * filledLength + '-' * (length - filledLength) print(f'\r{prefix} |{bar}| {percent}% {suffix}', end = printEnd) # Print New Line on Complete if iteration == total: print() # Handle exit event class ExitSignalHandler(): def __init__(self): import signal import threading global __exit_event global __on_exit_signal __exit_event = threading.Event() def __on_exit_signal(signo, _frame): __exit_event.set() for sig in ('TERM', 'HUP', 'INT'): signal.signal(getattr(signal, 'SIG'+sig), __on_exit_signal) def status(self): return __exit_event.is_set()