Melacak kemajuan dengan Python

Mengapa indikator kemajuan dibutuhkan?


Indikator kemajuan (progress bar) - tampilan visual dari proses kerja. Mereka membebaskan kita dari kebutuhan untuk khawatir tentang apakah skrip tergantung, memberikan ide intuitif tentang kecepatan eksekusi dan menyarankan berapa banyak waktu yang tersisa sampai selesai.


Seseorang yang belum pernah menggunakan indikator kemajuan sebelumnya mungkin menyarankan bahwa penerapannya dapat sangat menyulitkan kode. Untungnya, ini tidak benar. Contoh-contoh kecil di bawah ini menunjukkan cara cepat dan mudah mulai melacak kemajuan di konsol atau di antarmuka pustaka grafis PySimpleGUI yang mendapatkan dengan cepat.


Menggunakan Kemajuan


Yang pertama kita miliki adalah modul Progress .


Semua yang diperlukan dari Anda adalah untuk menunjukkan jumlah iterasi yang diharapkan, jenis indikator dan memanggil fungsi di setiap iterasi:


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() 

Hasil kerja:



Ada indikator untuk setiap selera:



Kami menggunakan tqdm


Baris berikutnya adalah pustaka tqdm .


Indikator kemajuan cepat dan dapat dikembangkan untuk Python dan CLI


Hanya satu panggilan fungsi yang diperlukan untuk mendapatkan hasil yang mirip dengan yang sebelumnya:


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

Kami mendapatkan:



Tentu saja, bundel ini dilengkapi dengan banyak pengaturan dan opsi.


Kami menggunakan kemajuan hidup


Versi lain dari sintaks, lebih banyak animasi default dari pada contoh sebelumnya:


 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) 

Hasil:



Indikator kemajuan GUI untuk skrip


Terkadang menjadi perlu untuk memberikan indikator grafik kepada pengguna akhir.



Berapa banyak kode yang dibutuhkan untuk mencapai hasil seperti itu? Sedikit:


 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) 

Indikator dalam Aplikasi PySimpleGUI


Pertimbangkan implementasi indikator di PySimpleGUI .



Inilah cara melakukannya:


 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() 

Kesimpulan


Seperti yang Anda lihat, tidak ada yang rumit dalam menambahkan informasi tentang kemajuan eksekusi: ada sedikit kode, dan daya tanggap sangat meningkat. Gunakan indikator untuk tidak pernah lagi menebak apakah prosesnya menggantung atau tidak!

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


All Articles