Progress Bar di Python: Panduan Lengkap dengan Contoh
Pelajari cara membuat progress bar Python menggunakan tqdm, progressbar2, alive-progress, dan Tkinter, beserta praktik terbaik untuk UX yang lebih baik dan kinerja aplikasi.
Di aplikasi masa kini, pengguna menginginkan umpan balik seketika, terutama saat tugas memerlukan waktu lama untuk diselesaikan. Progress bar di Python adalah cara yang jelas dan mudah untuk menunjukkan bahwa sesuatu sedang berjalan di latar belakang. Progress bar yang baik membuat program terasa lebih cepat, menambah kesan profesional, dan meningkatkan kemudahan penggunaan.
Dalam artikel ini, Anda akan mempelajari cara mengimplementasikan progress bar Python menggunakan pustaka populer seperti tqdm, progress, progressbar2, alive-progress, dan Tkinter, beserta praktik terbaik untuk meningkatkan pengalaman pengguna dan kinerja aplikasi.
Untuk alat baris perintah, tqdm adalah pilihan utama — ringan dan bekerja baik dengan pandas. Gunakan progress untuk skrip sederhana, progressbar2 saat Anda memerlukan tata letak kustom, atau alive-progress untuk visual animasi.
Untuk aplikasi desktop, ttk.Progressbar bawaan Tkinter mendukung tugas berdurasi diketahui (determinate) dan yang terbuka/berdurasi tak tentu (indeterminate).
Batasi frekuensi pembaruan di loop cepat agar tidak memperlambat eksekusi, dan padukan visual dengan teks seperti persentase atau hitungan agar bar tetap berguna bagi semua orang.
Apa Itu Progress Bar di Python?
Progress bar ada di mana-mana. Sering digunakan untuk mengunduh file, instalasi perangkat lunak, dan pipeline ETL. Progress bar juga bermanfaat untuk memantau kemajuan pelatihan model machine learning.
Progress bar menampilkan seberapa banyak tugas telah selesai dan seberapa banyak yang tersisa. Bentuknya bisa berupa teks di antarmuka baris perintah (CLI) atau bar visual di antarmuka grafis (GUI).
Progress bar meningkatkan pengalaman pengguna. Mereka memberikan pembaruan waktu nyata, menunjukkan kemajuan pengguna dalam proses. Jika terjadi penundaan, pengguna dapat memutuskan apakah akan ikut campur atau menunggu. Visibilitas ini mengurangi frustrasi dan membuat waktu tunggu terasa lebih singkat. Pengguna tidak akan menatap layar statis sambil bertanya-tanya apakah ada yang terjadi; mereka tetap terlibat dan merasa yakin bahwa proses berlanjut.
Pengembang menggunakan progress bar untuk melacak kinerja aplikasi. Mereka membantu mengidentifikasi bottleneck, membandingkan kinerja kode, dan memantau durasi tugas. Progress bar di skrip dan alur kerja menampilkan pembaruan status yang jelas. Ini membantu pengguna memahami proses yang berjalan lama dengan lebih baik. Mereka juga meningkatkan kegunaan alat interaktif dan notebook.
Progress bar juga bisa berfungsi sebagai bentuk pemantauan kinerja sederhana. Mereka menunjukkan berapa lama setiap tugas berlangsung. Ini membantu pengembang menemukan tahap yang lambat dan mengukur efisiensi. Hal ini memungkinkan perbandingan mudah antar-implementasi.
Progress Bar di Command Line
Progress bar di command line memberikan umpan balik visual untuk tugas yang berjalan lama langsung di terminal, menjadikan skrip lebih informatif dan ramah pengguna. Python menyediakan beberapa pustaka, masing-masing kuat dalam hal kecepatan, kustomisasi, dan gaya visual. Kita akan melihat empat di antaranya: tqdm, progress, progressbar2, dan alive-progress.
Tqdm: standar untuk kecepatan dan kesederhanaan
tqdm adalah pustaka populer di Python untuk membuat progress bar. Pustaka ini menyediakan indikator kemajuan yang cepat dan serbaguna untuk loop dan iterable. Ia melacak iterasi dan menghitung waktu tersisa serta waktu berlalu. Informasi ini memperbarui bar secara waktu nyata. tqdm berjalan di latar belakang. Ia memprediksi sisa waktu dan melewati pembaruan yang tidak diperlukan. Mudah dipelajari, ringan dalam penggunaan memori, serta didukung komunitas yang kuat.
Proses instalasi
Cara mudah memasang tqdm adalah menggunakan penginstal pip. Ketik perintah berikut dari terminal.
tqdm mudah digunakan. Impor pustakanya. Bungkus iterable apa pun dengan tqdm(iterable) untuk menampilkan progress bar.
Alih-alih menulis tqdm(range(n)), Anda dapat menggunakan bentuk singkat trange(n) untuk kenyamanan.
from tqdm import trange
import time
for _ in trange(100, desc="Processing"):# Do stuff here
time.sleep(0.05)# simulate a taskDidukung oleh
Kode ini menghasilkan progress bar langsung selama eksekusi.
Progress bar menampilkan
Persentase selesai (22%)
Jumlah iterasi yang selesai dari total (224/1000)
Waktu berlalu dan estimasi waktu tersisa (12 detik berlalu, 42 detik tersisa)
Iterasi per detik (18,09 it/s).
Untuk menambahkan deskripsi ke progress bar, tentukan opsi desc.
for i in trange(1000, desc='Processing'):# description# Simulate a task
time.sleep(0.05)Didukung oleh
Progress bar bersarang
Progress bar bersarang di tqdm membantu Anda melacak kemajuan di beberapa loop. Ini juga berguna saat Anda perlu melacak beberapa tahap kerja. Contohnya termasuk pemrosesan batch, loop bersarang, dan pelatihan model.
Bungkus setiap loop di loop bersarang dengan tqdm. Gunakan argumen position dan leave untuk mengontrol tampilannya.
position: Mengatur posisi vertikal setiap progress bar. position=0 adalah bar teratas, position=1 muncul di bawahnya, dan seterusnya.
leave: Jika leave=True, progress bar tetap di layar setelah selesai. Jika leave=False, bar menghilang untuk mencegah kekacauan tampilan.
for i in trange(3, desc='Outer loop', leave=True):for j in trange(5, desc='Inner loop', leave=False):for j in trange(4, desc='Inner inner loop', leave=False):
time.sleep(0.05)Didukung oleh
Progress bar bersarang menunjukkan hierarki yang jelas. Mereka membantu memvisualisasikan berbagai tahap tugas. Mereka memberikan wawasan terperinci pada berbagai level. Ini membantu pengembang mengidentifikasi perlambatan atau bottleneck dengan mudah.
Integrasi dengan pandas
Tqdm terintegrasi baik dengan pandas. Ia menyediakan cara mudah untuk menambahkan progress bar pada tugas DataFrame dan series. Ia menampilkan kemajuan waktu nyata untuk fungsi seperti apply, groupby, dan map. Fungsi-fungsi ini bisa lambat pada dataset besar.
Untuk mengaktifkan fitur ini, panggil tqdm.pandas(). Lalu gunakan progress_apply sebagai pengganti metode apply biasa di pandas. Ini akan menampilkan progress bar saat fungsi Anda berjalan pada baris atau kolom. Anda akan melihat kemajuan operasi tanpa harus menulis ulang kode.
Pada program berikut, kita membuat DataFrame dengan kolom bernama "numbers." Kolom ini berisi bilangan bulat dari 0 hingga 1000. Kemudian kita membuat kolom baru dengan menerapkan operasi "lambat" bernama slow_squared.
Alih-alih menggunakan fungsi apply standar dari pandas, kita menggunakan progress_apply dari tqdm. Progress bar akan muncul selama operasi berlangsung. Ia memberi pembaruan waktu nyata tentang seberapa banyak pemrosesan yang telah selesai.
import pandas as pd
from tqdm import tqdm
import time
# Simulate a time-consuming operationdefslow_square(x):
time.sleep(0.01)return x**2# Create a sample DataFrame
df = pd.DataFrame({'numbers':range(1000)})# Initialize tqdm for pandas
tqdm.pandas(desc="Processing")# Use progress_apply instead of apply
df['slow_squared']= df['numbers'].progress_apply(slow_square)# Print the resultprint(df.head())Didukung oleh
Keluaran kode adalah sebagai berikut.
Kita dapat menggunakan progress_apply untuk operasi DataFrame lain seperti groupby.
grouped = df.groupby('numbers').progress_apply(lambda g: g.sum())Didukung oleh
Opsi kustomisasi
Tqdm memungkinkan Anda menyesuaikan progress bar agar sesuai dengan berbagai lingkungan dan kebutuhan pengguna. Anda dapat menyesuaikan lebar dengan ncols. Argumen bar_format memberi kontrol penuh atas tata letak teks. Selain itu, menyetel dynamic_ncols=True membuat bar otomatis menyesuaikan ukuran sesuai terminal.
Pertimbangan kinerja khusus untuk tqdm
Tqdm cepat dan ringan. Ia menambah overhead yang kecil, bahkan di loop cepat. Anda dapat menonaktifkan progress bar dengan disable=True. Ini berguna di lingkungan produksi di mana kinerja sangat penting. Untuk loop cepat, memperbarui bar setiap kali bisa berlebihan. Karena itu, tqdm memungkinkan Anda mengontrol frekuensi pembaruan. Anda dapat menggunakan parameter seperti mininterval dan maxinterval.
Progress: Gaya yang dapat dikustomisasi dan spinner
Pustaka Progress di Python memungkinkan Anda membuat progress bar berbasis teks yang sederhana untuk command line. API-nya lugas. Mendukung progress bar dan spinner serta memungkinkan kustomisasi output dasar. Pustaka ini kecil, cepat, dan tanpa dependensi. Cocok untuk skrip cepat dan penyiapan sederhana.
Pustaka progress mencakup tujuh gaya progress bar bawaan: Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar, PixelBar, dan Shadybar.
Untuk penggunaan, impor gaya yang diinginkan, instansiasi variabel, gunakan .next() di dalam loop dan .finish() setelah proses selesai. Misalnya, untuk menggunakan ChargingBar, gunakan kode berikut.
import time
from progress.bar import ChargingBar
bar = ChargingBar('Processing',max=20)for i inrange(20):# Do some work
time.sleep(0.5)
bar.next()
bar.finish()
`Didukung oleh
Progress juga mencakup spinner untuk tugas berdurasi tidak diketahui. Kode untuk mengimplementasikan spinner sangat mudah.
import time
from progress.spinner import Spinner
spinner = Spinner('Processing... ')# Spinner during a task of unknown duration.for _ inrange(50):# Do stuff
time.sleep(0.1)# simulate a running task
spinner.next()
spinner.finish()Didukung oleh
Kode ini menghasilkan deskripsi ("Processing…") diikuti spinner.
Pustaka progress sederhana dan ringan, namun ada beberapa keterbatasan yang perlu dipertimbangkan. Ia tidak mendukung Jupyter notebook, dan tidak dapat menyesuaikan ukuran secara dinamis. Selain itu, opsi kustomisasinya lebih sedikit dibanding pustaka seperti tqdm. Cocok untuk tugas CLI dasar, tetapi bisa kewalahan pada pekerjaan yang kompleks atau berperforma tinggi.
Progressbar2: Kustomisasi lebih kaya dan kompatibilitas lebih baik
Progressbar2 adalah pustaka Python yang tangguh. Ia membantu Anda membuat progress bar yang fleksibel dan dapat dikustomisasi untuk aplikasi command-line. Pustaka ini memiliki banyak widget, seperti persentase, ETA, penanda animasi, dan pencacah. Cocok untuk tugas CLI yang lebih kompleks atau lebih rapi.
Progressbar2 menawarkan kontrol dan opsi pemformatan yang lebih banyak daripada pustaka sederhana seperti progress. Ia juga bekerja lebih baik dengan logging dan alur kerja multithread.
Kelas ProgressBar di progressbar2 menampilkan status kemajuan saat ini. Ini dilakukan dengan serangkaian widget yang dapat dikustomisasi.
Widget adalah bagian modular yang diperbarui berdasarkan status progress bar. Ini mencakup persentase selesai, waktu berlalu, dan estimasi waktu tersisa.
Anda dapat memilih dari banyak jenis widget. Ini termasuk label teks, penanda progres, penghitung, pengukur waktu, spinner, dan formatter kustom. Variasi ini memungkinkan Anda menyesuaikan tampilan dan fungsi bar untuk aplikasi Anda.
Penggunaan dasar Progressbar2 cukup sederhana.
import time
import progressbar
for i in progressbar.progressbar(range(1000)):
time.sleep(0.02)Didukung oleh
Output menampilkan persentase selesai, iterasi selesai/total iterasi, waktu berlalu, dan estimasi waktu tersisa.
Pustaka progress bar biasanya mengandalkan pembaruan satu baris di terminal menggunakan carriage return (\r). Ini berarti pernyataan print() biasa dapat mengganggu dengan mendorong bar ke bawah atau merusak outputnya. Pustaka progressbar2 menyediakan cara untuk mencetak pesan dengan aman tanpa mengganggu progress bar.
import time
import progressbar
bar = progressbar.ProgressBar(redirect_stdout=True)for i inrange(10):# Do some task
time.sleep(0.1)# Print statementprint(f'Loop #{i}')
bar.update(i)Didukung oleh
Pustaka progressbar2 menawarkan kustomisasi luas melalui sistem widget modularnya. Widget menampilkan detail di progress bar termasuk persentase selesai, waktu berlalu, estimasi waktu tersisa, penghitung, atau animasi bar. Anda bisa memadukan widget ini untuk membuat progress bar kustom. Misalnya, Anda bisa menampilkan persentase dan ETA. Atau menambahkan detail lain seperti nama file, cap waktu, atau spinner.
import time
import progressbar
# Define a custom set of widgets
widgets =['Progress: ',# Description text
progressbar.Percentage(),# Show percentage completed' ',
progressbar.Bar(marker=':'),# Custom bar with specified marker' ',
progressbar.ETA(),# Estimated time remaining' | ',
progressbar.Timer(),# Time elapsed]# Initialize the progress bar with widgets
bar = progressbar.ProgressBar(widgets=widgets, max_value=50)# Taskfor i inrange(50):# Do stuff
time.sleep(0.1)# Simulate task
bar.update(i +1)Didukung oleh
Alive-progress: animasi dinamis untuk terminal modern
Alive-progress menampilkan progress bar animasi yang berubah secara waktu nyata. Ini memberikan tampilan modern dan responsif pada aplikasi command-line. Bar bergerak maju dan menampilkan metrik waktu nyata yang berguna. Ia menampilkan persentase selesai, waktu berlalu, estimasi waktu tersisa, dan kecepatan iterasi. Ini membuatnya menarik sekaligus informatif.
Untuk memasang pustaka alive-progress, lakukan pip install.
Seperti yang ditampilkan di halaman GitHub-nya, untuk melihat demo kemampuannya, gunakan kode berikut.
from alive_progress.styles import showtime
showtime()Didukung oleh
Anda akan melihat keluaran serupa berikut.
Alive-progress mampu menampilkan dan mengelola beberapa progress bar secara bersamaan.
from alive_progress import alive_bar
import time
import threading
# Simulate a taskdefsimulate_task(name, total):with alive_bar(total, title=name)as bar:for _ inrange(total):# Do something
time.sleep(0.5)
bar()# Define threads
threads =[
threading.Thread(target=simulate_task, args=('Task A',50)),
threading.Thread(target=simulate_task, args=('Task B',70)),
threading.Thread(target=simulate_task, args=('Task C',40)),]# Start each threadfor t in threads:
t.start()# Block the main thread until the program is finishedfor t in threads:
t.join()Didukung oleh
Pustaka alive-progress menyertakan beberapa tema bawaan. Tema mengontrol elemen seperti gaya animasi, karakter pengisi bar, dan efek gerak keseluruhan. Tema umum termasuk classic, pulse, dan brackets.
import time
from alive_progress import alive_bar
with alive_bar(100, bar='blocks')as bar:for _ inrange(100):# Do something
time.sleep(0.02)
bar()Didukung oleh
Jeda/lanjutkan — hentikan sementara dan lanjutkan progres tanpa kehilangan status
from alive_progress import alive_bar
import time
# Run a task...with alive_bar(100)as bar:for i inrange(50):# Do something
time.sleep(0.02)
bar()# Pause
bar.text('Temporarily pausing...')
time.sleep(1)# Resume
bar.text('Resuming...')for i inrange(50):
time.sleep(0.02)
bar()Didukung oleh
Progress Bar GUI dengan Tkinter
Tkinter adalah toolkit GUI (Graphical User Interface) standar Python. Desainnya mencakup fitur bawaan dan siap pakai, sehingga Anda tidak perlu memasang apa pun tambahan. Anda dapat membuat jendela, tombol, kolom teks, menu, progress bar, dan lainnya. Tkinter ideal untuk membangun aplikasi desktop sederhana, alat interaktif, dan prototipe.
Progress bar dasar dapat dibuat menggunakan kode berikut.
import tkinter as tk
from tkinter import ttk
import time
defstart_progress():
progress["value"]=0
root.update_idletasks()for i inrange(101):
time.sleep(0.02)
progress["value"]= i
root.update_idletasks()# Set up the window
root = tk.Tk()
root.title("Progress Bar")
root.geometry("300x100")# Create a progress bar
progress = ttk.Progressbar(root, orient="horizontal", length=250, mode="determinate")
progress.pack(pady=20)# Create a start button
start_button = ttk.Button(root, text="Start", command=start_progress)
start_button.pack()# Start the tkinter loop
root.mainloop()Didukung oleh
Keluaran di Mac saya:
Ada dua mode yang tersedia pada ttk.Progressbar: determinate dan indeterminate. Mode determinate digunakan saat durasi atau jumlah langkah dalam tugas diketahui. Mode indeterminate digunakan ketika durasi tugas tidak diketahui atau tidak dapat diukur per langkah.
Kode di atas untuk mode determinate, karena kita tahu panjang tugasnya 250 langkah. Contoh mode indeterminate sebagai berikut.
import tkinter as tk
from tkinter import ttk
import time
import threading
defstart_indeterminate():defrun():# 10 ms between moves
progress.start(10)# Simulate task of unknown duration
time.sleep(10)# Stop
progress.stop()# Run in a thread, else the tkinter GUI loop is unresponsive
threading.Thread(target=run).start()# Set up the GUI
root = tk.Tk()
root.title("Indeterminate Progress Bar")
root.geometry("300x100")# Create an indeterminate progress bar
progress = ttk.Progressbar(root, mode='indeterminate', length=250)
progress.pack(pady=20)# Start button
start_button = ttk.Button(root, text="Start", command=start_indeterminate)
start_button.pack()# Run the tkinter loop
root.mainloop()Didukung oleh
Perhatikan bahwa progress bar dijalankan di thread terpisah. Jika kita menggunakan run() langsung di thread utama, pemanggilan time.sleep() akan memblokir event loop utama Tkinter dan menyebabkan seluruh GUI membeku, termasuk klik tombol, penyegaran jendela, dan animasi progress bar.
Pertimbangan Kinerja dan Optimasi
Pustaka mana yang harus Anda gunakan untuk progress bar? Sebagian keputusan bergantung pada kebutuhan overhead Anda dan kasus penggunaan.
Pustaka
Overhead
Kasus Penggunaan
tqdm
Sangat rendah
Loop cepat, pipeline data, dampak minimal pada kinerja
progress
Rendah
Skrip CLI sederhana, ringan dan tanpa dependensi
progressbar2
Sedang
Tata letak kustom, ETA, dan logging; sedikit perlambatan pada tugas cepat
alive-progress
Sedang hingga tinggi
Tugas dengan visual kaya, output multi-bar, animasi mulus; terbaik untuk tugas yang lebih lama
Untuk meningkatkan kinerja, optimalkan frekuensi pembaruan. Salah satu metode adalah tidak memperbarui bar pada setiap iterasi. Ini sangat penting pada loop yang cepat atau berfrekuensi tinggi. Gunakan logika kondisional untuk memperbarui setiap N langkah, misalnya setiap 100 iterasi.
Dalam pengaturan kinerja kritis atau kode produksi, nonaktifkan progress bar. Umpan balik visual tidak diperlukan di sini. Ini menghemat sumber daya sekaligus memastikan logika tetap sama untuk pengembangan atau debugging.
Mengurangi operasi I/O adalah kunci untuk kinerja. Menulis ke terminal, disk, atau jaringan dapat memperlambat. Berikut beberapa strategi untuk mengurangi I/O pada tugas yang kritis terhadap kinerja.
Buffer output dan tulis secara batch, bukan per iterasi.
Hanya perbarui pada interval tetap atau di bawah kondisi tertentu.
Minimalkan atau nonaktifkan print() di dalam loop.
Tambahkan flag untuk menekan output yang tidak perlu di produksi.
Pisahkan I/O dan komputasi menggunakan thread atau multiprocessing.
Kompresi atau batch penulisan besar untuk mengurangi frekuensi I/O disk.
Praktik Terbaik untuk Progress Bar yang Efektif
Mari kita lihat beberapa praktik terbaik yang perlu diingat saat membuat progress bar di Python.
Mengapa menggunakan progress bar?
Ada banyak alasan bagus untuk menggunakan progress bar di aplikasi Anda. Pertama, mereka memberikan umpan balik waktu nyata, meyakinkan pengguna bahwa tugas sedang berjalan dan mengurangi ketidakpastian. Visibilitas ini meningkatkan pengalaman pengguna, membuat waktu tunggu terasa lebih singkat dan interaksi lebih intuitif.
Kedua, dengan melacak penyelesaian tugas secara visual, progress bar memungkinkan pemantauan kinerja yang mudah, sehingga baik pengguna maupun pengembang dapat dengan cepat menemukan bottleneck atau proses yang macet selama operasi yang berjalan lama. Terakhir, memasukkan progress bar meningkatkan profesionalisme antarmuka aplikasi Anda, menyampaikan kejelasan dan pendekatan desain yang matang serta berfokus pada pengguna.
Tugas berdurasi diketahui vs tidak diketahui
Gunakan progress bar determinate untuk tugas yang berdurasi pasti. Ini mencakup pemrosesan file, loop, atau epoch pelatihan machine learning. Jenis bar ini terisi berdasarkan kemajuan yang terukur dan memberi pengguna gambaran jelas tentang sisa pekerjaan.
Untuk tugas dengan durasi yang tidak diketahui, seperti panggilan API atau pemeriksaan latar belakang, gunakan spinner atau bar indeterminate. Ini memberikan isyarat visual bahwa proses sedang berlangsung, meskipun kita tidak dapat memprediksi berapa lama waktu yang dibutuhkan.
Pustaka mana yang harus saya gunakan?
Pustaka yang Anda gunakan bergantung pada tugas yang ingin Anda selesaikan.
Tugas
Pustaka
Catatan
Loop frekuensi tinggi
tqdm
Ringan, efisien; gunakan mininterval untuk mengurangi pembaruan
Skrip sekali jalan yang sederhana
progress
Penyiapan minimal, tanpa dependensi, ideal untuk tugas cepat
Output terstruktur atau kustom
progressbar2
Berbasis widget, mendukung ETA, timer, dan kontrol tata letak
Tugas multi-tahap atau bersarang
tqdm, alive-progress
Mendukung bar bersarang atau tampilan multi-bar untuk tugas berlapis
Skrip CLI dengan tampilan apik
alive-progress
Visual animasi dan modern, pengalaman pengguna mulus
Aplikasi GUI
tkinter
Toolkit GUI bawaan dengan bar determinate dan indeterminate
Kustomisasi
Saat menyesuaikan progress bar, fokuslah pada kejelasan dan informasi yang berguna. Usahakan keseimbangan yang baik antara keduanya. Bar yang jelas dan sederhana dengan metrik kunci biasanya lebih baik daripada yang penuh dengan terlalu banyak informasi.
Anda dapat menggunakan pustaka seperti progressbar2 dan alive-progress. Pustaka ini memungkinkan Anda mengubah tata letak, warna, dan animasi progress bar. Gunakan tema atau pemformatan untuk meningkatkan pengalaman pengguna. Hindari menumpuk tampilan dengan terlalu banyak widget atau visual yang kompleks. Tujuannya adalah memberikan umpan balik yang membantu, tanpa mengalihkan perhatian atau membuat pengguna kewalahan.
Penanganan pengecualian dan pengujian kompatibilitas
Bungkus logika progress bar dalam blok try-except. Ini membantu menghindari gangguan UI atau crash jika terjadi error selama tugas berjalan. Ini penting dalam skrip yang berjalan lama atau saat menggunakan dependensi eksternal yang tidak pasti.
Selain itu, uji progress bar Anda di berbagai lingkungan. Periksa lintas sistem operasi, jenis terminal, dan lebar tampilan. Dengan begitu, Anda dapat memastikan perilakunya tetap konsisten.
Beberapa pustaka berperilaku berbeda di Jupyter notebook, terminal jarak jauh, atau shell GUI. Memverifikasi kompatibilitas sejak awal dapat membantu mencegah masalah tak terduga. Dengan demikian, pengguna akan memperoleh pengalaman yang lebih mulus di produksi.
Pertimbangan aksesibilitas
Saat membuat indikator progres, pertimbangkan aksesibilitas. Ini membantu semua pengguna menerima umpan balik yang jelas. Beberapa saran:
Jangan hanya mengandalkan warna atau animasi untuk menunjukkan progres. Tambahkan elemen teks seperti persentase, jumlah langkah, atau estimasi waktu.
Gunakan visual yang jelas dengan kontras tinggi untuk keterbacaan yang lebih baik.
Pastikan progress bar Anda bekerja baik dengan screen reader dalam aplikasi GUI.
Untuk alat command-line, pertimbangkan opsi verbosity yang mencetak pembaruan progres dalam teks biasa.
Menjadikan aksesibilitas sebagai prioritas meningkatkan kegunaan. Ini juga membuat alat Anda lebih inklusif dan profesional.
Kesimpulan
Progress bar adalah fitur sederhana namun kuat untuk aplikasi Python apa pun. Mereka memberikan umpan balik instan, meningkatkan pengalaman pengguna, serta membantu pelacakan kinerja dan kejernihan kode. Memilih pustaka progress bar yang tepat adalah kunci. Ia dapat meningkatkan perangkat lunak Anda, baik Anda membuat skrip cepat, alat command-line, atau aplikasi GUI lengkap. Implementasi yang matang dapat meningkatkan kecepatan, profesionalisme, dan keramahan aplikasi Anda. Dengan memprioritaskan kustomisasi, kinerja, kompatibilitas, dan aksesibilitas, progress bar menjadi lebih dari sekadar visual. Mereka menjadi bagian penting dari cara pengguna berinteraksi dengan karya Anda.
Progress bar adalah indikator visual yang menunjukkan seberapa banyak tugas telah selesai dan seberapa banyak yang tersisa. Ini meningkatkan pengalaman pengguna dengan memberikan umpan balik selama operasi yang berlangsung lama.
Apa saja pustaka progress bar yang populer di Python?⌄
Pustaka yang paling umum adalah tqdm, progress, progressbar2, dan alive-progress.
Apakah saya bisa menggunakan progress bar dengan pustaka pandas?⌄
Ya, bisa. tqdm terintegrasi dengan pandas melalui progress_apply() (sebagai pengganti apply) dan metode serupa.
Bisakah saya menyesuaikan tampilan progress bar?⌄
Ya. Pustaka seperti tqdm dan progressbar2 memungkinkan Anda menyesuaikan tata letak, lebar, warna, dan frekuensi pembaruan.
Pustaka mana yang harus saya gunakan untuk Jupyter Notebooks.⌄
Pustaka tqdm.notebook terintegrasi dengan baik di Jupyter.
Mark Pedigo, PhD, adalah seorang data scientist terkemuka dengan keahlian dalam data science kesehatan, pemrograman, dan pendidikan. Dengan gelar PhD di bidang Matematika, B.S. di bidang Ilmu Komputer, serta Sertifikat Profesional di bidang AI, Mark memadukan pengetahuan teknis dengan pemecahan masalah praktis. Kariernya mencakup peran dalam deteksi kecurangan, prediksi kematian bayi, dan peramalan keuangan, serta kontribusi pada perangkat lunak estimasi biaya NASA. Sebagai pendidik, ia telah mengajar di DataCamp dan Washington University in St. Louis serta membimbing programmer junior. Di waktu luang, Mark menikmati alam Minnesota bersama istrinya, Mandy, dan anjingnya, Harley, serta bermain piano jazz.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Kembangkan keterampilan pemrograman Python Anda. Pelajari cara bekerja dengan modul dan paket, bekerja dengan tipe data bawaan, dan menulis fungsi kustom.
Di aplikasi masa kini, pengguna menginginkan umpan balik seketika, terutama saat tugas memerlukan waktu lama untuk diselesaikan. Progress bar di Python adalah cara yang jelas dan mudah untuk menunjukkan bahwa sesuatu sedang berjalan di latar belakang. Progress bar yang baik membuat program terasa lebih cepat, menambah kesan profesional, dan meningkatkan kemudahan penggunaan.
Dalam artikel ini, Anda akan mempelajari cara mengimplementasikan progress bar Python menggunakan pustaka populer seperti
tqdm,progress,progressbar2,alive-progress, danTkinter, beserta praktik terbaik untuk meningkatkan pengalaman pengguna dan kinerja aplikasi.Untuk mempelajari konsep Python secara praktis, lihat jalur keterampilan Python Programming Fundamentals kami.
Ringkasnya
Untuk alat baris perintah,
tqdmadalah pilihan utama — ringan dan bekerja baik dengan pandas. Gunakanprogressuntuk skrip sederhana,progressbar2saat Anda memerlukan tata letak kustom, ataualive-progressuntuk visual animasi.Untuk aplikasi desktop,
ttk.Progressbarbawaan Tkinter mendukung tugas berdurasi diketahui (determinate) dan yang terbuka/berdurasi tak tentu (indeterminate).Batasi frekuensi pembaruan di loop cepat agar tidak memperlambat eksekusi, dan padukan visual dengan teks seperti persentase atau hitungan agar bar tetap berguna bagi semua orang.
Apa Itu Progress Bar di Python?
Progress bar ada di mana-mana. Sering digunakan untuk mengunduh file, instalasi perangkat lunak, dan pipeline ETL. Progress bar juga bermanfaat untuk memantau kemajuan pelatihan model machine learning.
Progress bar menampilkan seberapa banyak tugas telah selesai dan seberapa banyak yang tersisa. Bentuknya bisa berupa teks di antarmuka baris perintah (CLI) atau bar visual di antarmuka grafis (GUI).
Progress bar meningkatkan pengalaman pengguna. Mereka memberikan pembaruan waktu nyata, menunjukkan kemajuan pengguna dalam proses. Jika terjadi penundaan, pengguna dapat memutuskan apakah akan ikut campur atau menunggu. Visibilitas ini mengurangi frustrasi dan membuat waktu tunggu terasa lebih singkat. Pengguna tidak akan menatap layar statis sambil bertanya-tanya apakah ada yang terjadi; mereka tetap terlibat dan merasa yakin bahwa proses berlanjut.
Pengembang menggunakan progress bar untuk melacak kinerja aplikasi. Mereka membantu mengidentifikasi bottleneck, membandingkan kinerja kode, dan memantau durasi tugas. Progress bar di skrip dan alur kerja menampilkan pembaruan status yang jelas. Ini membantu pengguna memahami proses yang berjalan lama dengan lebih baik. Mereka juga meningkatkan kegunaan alat interaktif dan notebook.
Progress bar juga bisa berfungsi sebagai bentuk pemantauan kinerja sederhana. Mereka menunjukkan berapa lama setiap tugas berlangsung. Ini membantu pengembang menemukan tahap yang lambat dan mengukur efisiensi. Hal ini memungkinkan perbandingan mudah antar-implementasi.
Progress Bar di Command Line
Progress bar di command line memberikan umpan balik visual untuk tugas yang berjalan lama langsung di terminal, menjadikan skrip lebih informatif dan ramah pengguna. Python menyediakan beberapa pustaka, masing-masing kuat dalam hal kecepatan, kustomisasi, dan gaya visual. Kita akan melihat empat di antaranya:
tqdm,progress,progressbar2, danalive-progress.Tqdm: standar untuk kecepatan dan kesederhanaan
tqdmadalah pustaka populer di Python untuk membuat progress bar. Pustaka ini menyediakan indikator kemajuan yang cepat dan serbaguna untuk loop dan iterable. Ia melacak iterasi dan menghitung waktu tersisa serta waktu berlalu. Informasi ini memperbarui bar secara waktu nyata.tqdmberjalan di latar belakang. Ia memprediksi sisa waktu dan melewati pembaruan yang tidak diperlukan. Mudah dipelajari, ringan dalam penggunaan memori, serta didukung komunitas yang kuat.Proses instalasi
Cara mudah memasang
tqdmadalah menggunakan penginstalpip. Ketik perintah berikut dari terminal.Cetak nomor versi untuk memastikan pustaka terpasang dengan benar.
4.67.1Penggunaan dasar tqdm
tqdmmudah digunakan. Impor pustakanya. Bungkus iterable apa pun dengan tqdm(iterable) untuk menampilkan progress bar.Alih-alih menulis
tqdm(range(n)), Anda dapat menggunakan bentuk singkattrange(n)untuk kenyamanan.Kode ini menghasilkan progress bar langsung selama eksekusi.
Progress bar menampilkan
Untuk menambahkan deskripsi ke progress bar, tentukan opsi
desc.Progress bar bersarang
Progress bar bersarang di tqdm membantu Anda melacak kemajuan di beberapa loop. Ini juga berguna saat Anda perlu melacak beberapa tahap kerja. Contohnya termasuk pemrosesan batch, loop bersarang, dan pelatihan model.
Bungkus setiap loop di loop bersarang dengan tqdm. Gunakan argumen position dan leave untuk mengontrol tampilannya.
position: Mengatur posisi vertikal setiap progress bar. position=0 adalah bar teratas, position=1 muncul di bawahnya, dan seterusnya.leave: Jika leave=True, progress bar tetap di layar setelah selesai. Jika leave=False, bar menghilang untuk mencegah kekacauan tampilan.Progress bar bersarang menunjukkan hierarki yang jelas. Mereka membantu memvisualisasikan berbagai tahap tugas. Mereka memberikan wawasan terperinci pada berbagai level. Ini membantu pengembang mengidentifikasi perlambatan atau bottleneck dengan mudah.
Integrasi dengan pandas
Tqdm terintegrasi baik dengan pandas. Ia menyediakan cara mudah untuk menambahkan progress bar pada tugas DataFrame dan series. Ia menampilkan kemajuan waktu nyata untuk fungsi seperti
apply,groupby, danmap. Fungsi-fungsi ini bisa lambat pada dataset besar.Untuk mengaktifkan fitur ini, panggil tqdm.pandas(). Lalu gunakan
progress_applysebagai pengganti metodeapplybiasa di pandas. Ini akan menampilkan progress bar saat fungsi Anda berjalan pada baris atau kolom. Anda akan melihat kemajuan operasi tanpa harus menulis ulang kode.Pada program berikut, kita membuat DataFrame dengan kolom bernama "numbers." Kolom ini berisi bilangan bulat dari 0 hingga 1000. Kemudian kita membuat kolom baru dengan menerapkan operasi "lambat" bernama
slow_squared.Alih-alih menggunakan fungsi apply standar dari pandas, kita menggunakan
progress_applydari tqdm. Progress bar akan muncul selama operasi berlangsung. Ia memberi pembaruan waktu nyata tentang seberapa banyak pemrosesan yang telah selesai.Keluaran kode adalah sebagai berikut.
Kita dapat menggunakan
progress_applyuntuk operasi DataFrame lain sepertigroupby.Opsi kustomisasi
Tqdm memungkinkan Anda menyesuaikan progress bar agar sesuai dengan berbagai lingkungan dan kebutuhan pengguna. Anda dapat menyesuaikan lebar dengan
ncols. Argumenbar_formatmemberi kontrol penuh atas tata letak teks. Selain itu, menyeteldynamic_ncols=Truemembuat bar otomatis menyesuaikan ukuran sesuai terminal.Pertimbangan kinerja khusus untuk tqdm
Tqdm cepat dan ringan. Ia menambah overhead yang kecil, bahkan di loop cepat. Anda dapat menonaktifkan progress bar dengan
disable=True. Ini berguna di lingkungan produksi di mana kinerja sangat penting. Untuk loop cepat, memperbarui bar setiap kali bisa berlebihan. Karena itu,tqdmmemungkinkan Anda mengontrol frekuensi pembaruan. Anda dapat menggunakan parameter sepertiminintervaldanmaxinterval.Progress: Gaya yang dapat dikustomisasi dan spinner
Pustaka Progress di Python memungkinkan Anda membuat progress bar berbasis teks yang sederhana untuk command line. API-nya lugas. Mendukung progress bar dan spinner serta memungkinkan kustomisasi output dasar. Pustaka ini kecil, cepat, dan tanpa dependensi. Cocok untuk skrip cepat dan penyiapan sederhana.
Pustaka
progressmencakup tujuh gaya progress bar bawaan: Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar, PixelBar, dan Shadybar.Untuk pemasangan, gunakan pip install.
Untuk penggunaan, impor gaya yang diinginkan, instansiasi variabel, gunakan
.next()di dalam loop dan.finish()setelah proses selesai. Misalnya, untuk menggunakan ChargingBar, gunakan kode berikut.Progressjuga mencakup spinner untuk tugas berdurasi tidak diketahui. Kode untuk mengimplementasikan spinner sangat mudah.Kode ini menghasilkan deskripsi ("Processing…") diikuti spinner.
Pustaka progress sederhana dan ringan, namun ada beberapa keterbatasan yang perlu dipertimbangkan. Ia tidak mendukung Jupyter notebook, dan tidak dapat menyesuaikan ukuran secara dinamis. Selain itu, opsi kustomisasinya lebih sedikit dibanding pustaka seperti tqdm. Cocok untuk tugas CLI dasar, tetapi bisa kewalahan pada pekerjaan yang kompleks atau berperforma tinggi.
Progressbar2: Kustomisasi lebih kaya dan kompatibilitas lebih baik
Progressbar2 adalah pustaka Python yang tangguh. Ia membantu Anda membuat progress bar yang fleksibel dan dapat dikustomisasi untuk aplikasi command-line. Pustaka ini memiliki banyak widget, seperti persentase, ETA, penanda animasi, dan pencacah. Cocok untuk tugas CLI yang lebih kompleks atau lebih rapi.
Progressbar2 menawarkan kontrol dan opsi pemformatan yang lebih banyak daripada pustaka sederhana seperti progress. Ia juga bekerja lebih baik dengan logging dan alur kerja multithread.
Untuk memasang, gunakan pip install.
Kelas ProgressBar di progressbar2 menampilkan status kemajuan saat ini. Ini dilakukan dengan serangkaian widget yang dapat dikustomisasi.
Widget adalah bagian modular yang diperbarui berdasarkan status progress bar. Ini mencakup persentase selesai, waktu berlalu, dan estimasi waktu tersisa.
Anda dapat memilih dari banyak jenis widget. Ini termasuk label teks, penanda progres, penghitung, pengukur waktu, spinner, dan formatter kustom. Variasi ini memungkinkan Anda menyesuaikan tampilan dan fungsi bar untuk aplikasi Anda.
Penggunaan dasar Progressbar2 cukup sederhana.
Output menampilkan persentase selesai, iterasi selesai/total iterasi, waktu berlalu, dan estimasi waktu tersisa.
Pustaka progress bar biasanya mengandalkan pembaruan satu baris di terminal menggunakan carriage return (
\r). Ini berarti pernyataanprint()biasa dapat mengganggu dengan mendorong bar ke bawah atau merusak outputnya. Pustakaprogressbar2menyediakan cara untuk mencetak pesan dengan aman tanpa mengganggu progress bar.Pustaka progressbar2 menawarkan kustomisasi luas melalui sistem widget modularnya. Widget menampilkan detail di progress bar termasuk persentase selesai, waktu berlalu, estimasi waktu tersisa, penghitung, atau animasi bar. Anda bisa memadukan widget ini untuk membuat progress bar kustom. Misalnya, Anda bisa menampilkan persentase dan ETA. Atau menambahkan detail lain seperti nama file, cap waktu, atau spinner.
Alive-progress: animasi dinamis untuk terminal modern
Alive-progress menampilkan progress bar animasi yang berubah secara waktu nyata. Ini memberikan tampilan modern dan responsif pada aplikasi command-line. Bar bergerak maju dan menampilkan metrik waktu nyata yang berguna. Ia menampilkan persentase selesai, waktu berlalu, estimasi waktu tersisa, dan kecepatan iterasi. Ini membuatnya menarik sekaligus informatif.
Untuk memasang pustaka alive-progress, lakukan pip install.
Seperti yang ditampilkan di halaman GitHub-nya, untuk melihat demo kemampuannya, gunakan kode berikut.
Anda akan melihat keluaran serupa berikut.
Alive-progress mampu menampilkan dan mengelola beberapa progress bar secara bersamaan.
Pustaka
alive-progressmenyertakan beberapa tema bawaan. Tema mengontrol elemen seperti gaya animasi, karakter pengisi bar, dan efek gerak keseluruhan. Tema umum termasukclassic,pulse, danbrackets.Jeda/lanjutkan — hentikan sementara dan lanjutkan progres tanpa kehilangan status
Progress Bar GUI dengan Tkinter
Tkinter adalah toolkit GUI (Graphical User Interface) standar Python. Desainnya mencakup fitur bawaan dan siap pakai, sehingga Anda tidak perlu memasang apa pun tambahan. Anda dapat membuat jendela, tombol, kolom teks, menu, progress bar, dan lainnya. Tkinter ideal untuk membangun aplikasi desktop sederhana, alat interaktif, dan prototipe.
Progress bar dasar dapat dibuat menggunakan kode berikut.
Keluaran di Mac saya:
Ada dua mode yang tersedia pada ttk.Progressbar: determinate dan indeterminate. Mode determinate digunakan saat durasi atau jumlah langkah dalam tugas diketahui. Mode indeterminate digunakan ketika durasi tugas tidak diketahui atau tidak dapat diukur per langkah.
Kode di atas untuk mode determinate, karena kita tahu panjang tugasnya 250 langkah. Contoh mode indeterminate sebagai berikut.
Perhatikan bahwa progress bar dijalankan di thread terpisah. Jika kita menggunakan
run()langsung di thread utama, pemanggilantime.sleep()akan memblokir event loop utama Tkinter dan menyebabkan seluruh GUI membeku, termasuk klik tombol, penyegaran jendela, dan animasi progress bar.Pertimbangan Kinerja dan Optimasi
Pustaka mana yang harus Anda gunakan untuk progress bar? Sebagian keputusan bergantung pada kebutuhan overhead Anda dan kasus penggunaan.
Pustaka
Overhead
Kasus Penggunaan
tqdm
Sangat rendah
Loop cepat, pipeline data, dampak minimal pada kinerja
progress
Rendah
Skrip CLI sederhana, ringan dan tanpa dependensi
progressbar2
Sedang
Tata letak kustom, ETA, dan logging; sedikit perlambatan pada tugas cepat
alive-progress
Sedang hingga tinggi
Tugas dengan visual kaya, output multi-bar, animasi mulus; terbaik untuk tugas yang lebih lama
Untuk meningkatkan kinerja, optimalkan frekuensi pembaruan. Salah satu metode adalah tidak memperbarui bar pada setiap iterasi. Ini sangat penting pada loop yang cepat atau berfrekuensi tinggi. Gunakan logika kondisional untuk memperbarui setiap N langkah, misalnya setiap 100 iterasi.
Dalam pengaturan kinerja kritis atau kode produksi, nonaktifkan progress bar. Umpan balik visual tidak diperlukan di sini. Ini menghemat sumber daya sekaligus memastikan logika tetap sama untuk pengembangan atau debugging.
Mengurangi operasi I/O adalah kunci untuk kinerja. Menulis ke terminal, disk, atau jaringan dapat memperlambat. Berikut beberapa strategi untuk mengurangi I/O pada tugas yang kritis terhadap kinerja.
Praktik Terbaik untuk Progress Bar yang Efektif
Mari kita lihat beberapa praktik terbaik yang perlu diingat saat membuat progress bar di Python.
Mengapa menggunakan progress bar?
Ada banyak alasan bagus untuk menggunakan progress bar di aplikasi Anda. Pertama, mereka memberikan umpan balik waktu nyata, meyakinkan pengguna bahwa tugas sedang berjalan dan mengurangi ketidakpastian. Visibilitas ini meningkatkan pengalaman pengguna, membuat waktu tunggu terasa lebih singkat dan interaksi lebih intuitif.
Kedua, dengan melacak penyelesaian tugas secara visual, progress bar memungkinkan pemantauan kinerja yang mudah, sehingga baik pengguna maupun pengembang dapat dengan cepat menemukan bottleneck atau proses yang macet selama operasi yang berjalan lama. Terakhir, memasukkan progress bar meningkatkan profesionalisme antarmuka aplikasi Anda, menyampaikan kejelasan dan pendekatan desain yang matang serta berfokus pada pengguna.
Tugas berdurasi diketahui vs tidak diketahui
Gunakan progress bar determinate untuk tugas yang berdurasi pasti. Ini mencakup pemrosesan file, loop, atau epoch pelatihan machine learning. Jenis bar ini terisi berdasarkan kemajuan yang terukur dan memberi pengguna gambaran jelas tentang sisa pekerjaan.
Untuk tugas dengan durasi yang tidak diketahui, seperti panggilan API atau pemeriksaan latar belakang, gunakan spinner atau bar indeterminate. Ini memberikan isyarat visual bahwa proses sedang berlangsung, meskipun kita tidak dapat memprediksi berapa lama waktu yang dibutuhkan.
Pustaka mana yang harus saya gunakan?
Pustaka yang Anda gunakan bergantung pada tugas yang ingin Anda selesaikan.
Tugas
Pustaka
Catatan
Loop frekuensi tinggi
tqdm
Ringan, efisien; gunakan mininterval untuk mengurangi pembaruan
Skrip sekali jalan yang sederhana
progress
Penyiapan minimal, tanpa dependensi, ideal untuk tugas cepat
Output terstruktur atau kustom
progressbar2
Berbasis widget, mendukung ETA, timer, dan kontrol tata letak
Tugas multi-tahap atau bersarang
tqdm, alive-progress
Mendukung bar bersarang atau tampilan multi-bar untuk tugas berlapis
Skrip CLI dengan tampilan apik
alive-progress
Visual animasi dan modern, pengalaman pengguna mulus
Aplikasi GUI
tkinter
Toolkit GUI bawaan dengan bar determinate dan indeterminate
Kustomisasi
Saat menyesuaikan progress bar, fokuslah pada kejelasan dan informasi yang berguna. Usahakan keseimbangan yang baik antara keduanya. Bar yang jelas dan sederhana dengan metrik kunci biasanya lebih baik daripada yang penuh dengan terlalu banyak informasi.
Anda dapat menggunakan pustaka seperti progressbar2 dan alive-progress. Pustaka ini memungkinkan Anda mengubah tata letak, warna, dan animasi progress bar. Gunakan tema atau pemformatan untuk meningkatkan pengalaman pengguna. Hindari menumpuk tampilan dengan terlalu banyak widget atau visual yang kompleks. Tujuannya adalah memberikan umpan balik yang membantu, tanpa mengalihkan perhatian atau membuat pengguna kewalahan.
Penanganan pengecualian dan pengujian kompatibilitas
Bungkus logika progress bar dalam blok try-except. Ini membantu menghindari gangguan UI atau crash jika terjadi error selama tugas berjalan. Ini penting dalam skrip yang berjalan lama atau saat menggunakan dependensi eksternal yang tidak pasti.
Selain itu, uji progress bar Anda di berbagai lingkungan. Periksa lintas sistem operasi, jenis terminal, dan lebar tampilan. Dengan begitu, Anda dapat memastikan perilakunya tetap konsisten.
Beberapa pustaka berperilaku berbeda di Jupyter notebook, terminal jarak jauh, atau shell GUI. Memverifikasi kompatibilitas sejak awal dapat membantu mencegah masalah tak terduga. Dengan demikian, pengguna akan memperoleh pengalaman yang lebih mulus di produksi.
Pertimbangan aksesibilitas
Saat membuat indikator progres, pertimbangkan aksesibilitas. Ini membantu semua pengguna menerima umpan balik yang jelas. Beberapa saran:
Menjadikan aksesibilitas sebagai prioritas meningkatkan kegunaan. Ini juga membuat alat Anda lebih inklusif dan profesional.
Kesimpulan
Progress bar adalah fitur sederhana namun kuat untuk aplikasi Python apa pun. Mereka memberikan umpan balik instan, meningkatkan pengalaman pengguna, serta membantu pelacakan kinerja dan kejernihan kode. Memilih pustaka progress bar yang tepat adalah kunci. Ia dapat meningkatkan perangkat lunak Anda, baik Anda membuat skrip cepat, alat command-line, atau aplikasi GUI lengkap. Implementasi yang matang dapat meningkatkan kecepatan, profesionalisme, dan keramahan aplikasi Anda. Dengan memprioritaskan kustomisasi, kinerja, kompatibilitas, dan aksesibilitas, progress bar menjadi lebih dari sekadar visual. Mereka menjadi bagian penting dari cara pengguna berinteraksi dengan karya Anda.
Untuk terus belajar, lihat sumber berikut: