Suivi des progrès dans Python

Pourquoi des indicateurs de progrès sont-ils nécessaires?


Indicateurs de progression (barre de progression) - un affichage visuel du processus de travail. Ils nous soulagent de la nécessité de se soucier de savoir si le script est suspendu, donnent une idée intuitive de la vitesse de son exécution et suggèrent combien de temps il reste jusqu'à la fin.


Une personne qui n'a pas utilisé d'indicateurs de progrès auparavant peut suggérer que leur mise en œuvre peut considérablement compliquer le code. Heureusement, ce n'est pas le cas. Les petits exemples ci-dessous montrent comment démarrer rapidement et facilement le suivi des progrès dans la console ou dans l'interface de la bibliothèque graphique PySimpleGUI qui gagne rapidement.


Utilisation de Progress


Le premier que nous avons est le module Progress .


Il vous suffit d'indiquer le nombre d'itérations attendues, le type d'indicateur et d'appeler la fonction à chaque itération:


import time from progress.bar import IncrementalBar mylist = [1,2,3,4,5,6,7,8] bar = IncrementalBar('Countdown', max = len(mylist)) for item in mylist: bar.next() time.sleep(1) bar.finish() 

Le résultat du travail:



Il existe des indicateurs pour tous les goûts:



Nous utilisons tqdm


La prochaine bibliothèque en ligne est la bibliothèque tqdm .


Indicateur de progression rapide et extensible pour Python et CLI


Un seul appel de fonction sera nécessaire pour obtenir un résultat similaire au précédent:


 import time from tqdm import tqdm mylist = [1,2,3,4,5,6,7,8] for i in tqdm(mylist): time.sleep(1) 

Nous obtenons:



Bien sûr, le pack est livré avec un tas de paramètres et d'options.


Nous utilisons le progrès vivant


Une autre version de la syntaxe, plus d'animations par défaut que dans les exemples précédents:


 from alive_progress import alive_bar import time mylist = [1,2,3,4,5,6,7,8] with alive_bar(len(mylist)) as bar: for i in mylist: bar() time.sleep(1) 

Résultat:



Indicateur de progression de l'interface graphique pour le script


Parfois, il devient nécessaire de fournir un indicateur graphique à l'utilisateur final.



Quelle quantité de code est nécessaire pour obtenir un tel résultat? Un peu:


 import PySimpleGUI as sg import time mylist = [1,2,3,4,5,6,7,8] for i, item in enumerate(mylist): sg.one_line_progress_meter('This is my progress meter!', i+1, len(mylist), '-key-') time.sleep(1) 

Indicateur dans l'application PySimpleGUI


Considérez la mise en œuvre de l'indicateur dans PySimpleGUI .



Voici comment procéder:


 import PySimpleGUI as sg import time mylist = [1,2,3,4,5,6,7,8] progressbar = [ [sg.ProgressBar(len(mylist), orientation='h', size=(51, 10), key='progressbar')] ] outputwin = [ [sg.Output(size=(78,20))] ] layout = [ [sg.Frame('Progress',layout= progressbar)], [sg.Frame('Output', layout = outputwin)], [sg.Submit('Start'),sg.Cancel()] ] window = sg.Window('Custom Progress Meter', layout) progress_bar = window['progressbar'] while True: event, values = window.read(timeout=10) if event == 'Cancel' or event is None: break elif event == 'Start': for i,item in enumerate(mylist): print(item) time.sleep(1) progress_bar.UpdateBar(i + 1) window.close() 

Conclusion


Comme vous pouvez le voir, il n'y a rien de compliqué à ajouter des informations sur la progression de l'exécution: il y a peu de code, et la réactivité est considérablement augmentée. Utilisez des indicateurs pour ne plus jamais deviner si le processus est suspendu ou non!

Source: https://habr.com/ru/post/fr483400/


All Articles