Traffine I/O

Bahasa Indonesia

2023-03-10

Progress Bars dengan TQDM di Python

Apa itu TQDM

TQDM adalah sebuah perpustakaan Python populer yang menyediakan cara mudah untuk menambahkan progress bar ke dalam kode Anda. Ini adalah cara yang sederhana dan efisien untuk memantau kemajuan eksekusi kode Anda dan memperkirakan waktu yang tersisa untuk menyelesaikan. Ini dapat sangat berguna saat bekerja dengan kumpulan data besar atau saat menjalankan komputasi yang panjang dan kompleks.

Menginstal TQDM

Menginstal TQDM sangat mudah. Anda dapat menginstalnya menggunakan pip, pengelola paket Python, dengan menjalankan perintah berikut:

bash
$ pip install tqdm

Atau, Anda dapat menginstalnya menggunakan conda, pengelola paket Anaconda, dengan menjalankan perintah berikut:

bash
$ conda install tqdm

Once installed, you can import the tqdm module into your Python script or notebook and start using it to add progress bars to your code. TQDM provides a simple and intuitive API that makes it easy to add progress bars to loops, iterators, and other iterable objects.

Penggunaan Dasar TQDM

Kita akan menjelajahi beberapa contoh penggunaan dasar TQDM, termasuk cara menggunakannya dengan iterable, loop, dan cara menyesuaikan penampilan progress bar. Kita juga akan menjelajahi cara menggunakan nested progress bar dengan TQDM.

Menggunakan TQDM dengan Iterable

Salah satu penggunaan TQDM yang paling umum adalah menambahkan progress bar ke dalam objek yang dapat di-iterasi, seperti list, tuple, dan range. Hal ini dapat dilakukan dengan melewatkan objek yang dapat di-iterasi ke dalam fungsi tqdm, seperti yang ditunjukkan pada contoh berikut:

python
from tqdm import tqdm

my_list = [1, 2, 3, 4, 5]

for item in tqdm(my_list): # do something with item

Ini akan membuat progress bar yang melacak kemajuan loop melalui elemen dari list. Progress bar akan diperbarui secara real-time, dan akan menampilkan kemajuan saat ini, waktu yang diperkirakan tersisa, dan kecepatan eksekusi loop.

Menggunakan TQDM dengan Loop

Selain objek yang dapat diiterasi, TQDM juga dapat digunakan dengan loop biasa. Ini dapat dilakukan dengan memasukkan loop ke dalam panggilan fungsi tqdm, seperti yang ditunjukkan dalam contoh berikut:

python
from tqdm import tqdm

for i in tqdm(range(100)):
    # do something with i

Ini akan membuat progress bar yang melacak kemajuan loop melalui rentang nilai dari 0 hingga 99. Progress bar akan diperbarui secara real-time, dan akan menampilkan kemajuan saat ini, waktu yang diperkirakan tersisa, dan kecepatan eksekusi loop.

Menyesuaikan Tampilan TQDM Bar

TQDM menyediakan beberapa opsi untuk menyesuaikan tampilan progress bar. Opsi ini termasuk mengubah warna progress bar, mengatur lebar progress bar, dan menampilkan pesan kustom. Contoh berikut menunjukkan cara menyesuaikan tampilan progress bar:

python
from tqdm import tqdm

my_list = [1, 2, 3, 4, 5]

for item in tqdm(my_list, desc="Processing items", bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}]"):
    # do something with item

Dalam contoh ini, kita memberikan string format kustom ke parameter bar_format. String format ini mendefinisikan tata letak progress bar dan mencakup placeholder untuk berbagai parameter progress bar, seperti kemajuan saat ini, waktu yang diperkirakan tersisa, dan kecepatan eksekusi loop.

Nested Progress Bars dengan TQDM

TQDM juga mendukung nested progress bars, yang dapat berguna saat bekerja dengan komputasi yang kompleks yang melibatkan beberapa level iterasi. Contoh berikut menunjukkan cara menggunakan nested progress bars dengan TQDM:

python
from tqdm import tqdm

outer_list = [1, 2, 3, 4, 5]
inner_list = [10, 20, 30, 40, 50]

for outer_item in tqdm(outer_list, desc="Outer loop"):
    for inner_item in tqdm(inner_list, desc="Inner loop", leave=False):
        # do something with outer_item and inner_item

Dalam contoh ini, kita memiliki dua loop yang bersarang, dan kita menggunakan TQDM untuk membuat progress bar untuk keduanya. Kita juga mengatur parameter leave menjadi False untuk loop dalam, yang menyebabkan progress bar untuk loop luar tetap terlihat saat loop dalam sedang berjalan. Ini dapat membantu dalam melacak kemajuan keseluruhan komputasi.

Penggunaan TQDM yang Lanjutan

Kita akan mengeksplorasi beberapa contoh penggunaan TQDM yang lebih lanjut, termasuk bagaimana menggunakannya dengan Pandas, Multiprocessing, Jupyter Notebooks, dan AsyncIO.

Menggunakan TQDM dengan Pandas

Pandas adalah pustaka Python populer untuk analisis data, dan TQDM dapat digunakan untuk menambahkan bar kemajuan pada operasi Pandas yang melibatkan dataset besar. Berikut adalah contoh penggunaan TQDM dengan Pandas:

python
import pandas as pd
from tqdm import tqdm

df = pd.read_csv("my_large_dataset.csv")

for index, row in tqdm(df.iterrows(), total=len(df)):
    # do something with row

Dalam contoh ini, kita menggunakan metode DataFrame.iterrows() Pandas untuk mengulang baris dari DataFrame, dan kita menggunakan TQDM untuk membuat bar kemajuan yang melacak kemajuan iterasi. Parameter total diatur ke panjang DataFrame, yang memastikan bahwa bar kemajuan secara akurat mencerminkan kemajuan iterasi.

Menggunakan TQDM dengan Multiprocessing

Multiprocessing adalah modul Python yang memungkinkan Anda menjalankan beberapa proses secara bersamaan. TQDM dapat digunakan untuk menambahkan bar kemajuan pada operasi multiprocessing, yang dapat membantu dalam melacak kemajuan komputasi yang kompleks. Berikut adalah contoh penggunaan TQDM dengan Multiprocessing:

python
import multiprocessing as mp
from tqdm import tqdm

def process_item(item):
    # do something with item

pool = mp.Pool(processes=4)

results = []

for item in tqdm(pool.imap(process_item, my_list), total=len(my_list)):
    results.append(item)

Dalam contoh ini, kita membuat sebuah pool multiprocessing dengan empat proses, dan kita menggunakan metode pool.imap() untuk menerapkan fungsi process_item() pada setiap item di my_list. Kita menggunakan TQDM untuk membuat bar kemajuan yang melacak kemajuan operasi multiprocessing.

Menggunakan TQDM dengan Jupyter Notebooks

Jupyter Notebooks adalah alat populer untuk analisis data dan komputasi ilmiah dalam Python. TQDM dapat digunakan untuk menambahkan bar kemajuan ke Jupyter Notebooks, yang dapat membantu dalam melacak kemajuan komputasi yang berjalan lama. Berikut adalah contoh penggunaan TQDM dengan Jupyter Notebooks:

python
from tqdm.notebook import tqdm

for i in tqdm(range(100)):
    # do something with i

Dalam contoh ini, kita menggunakan modul tqdm.notebook untuk membuat bar kemajuan yang kompatibel dengan Jupyter Notebooks. Bar kemajuan akan ditampilkan di dalam keluaran notebook, dan akan diperbarui secara real-time saat loop berlangsung.

Menggunakan TQDM dengan AsyncIO

AsyncIO adalah modul Python yang memungkinkan Anda menulis kode asinkronus menggunakan coroutines dan event loop. TQDM dapat digunakan untuk menambahkan bar kemajuan pada operasi AsyncIO, yang dapat membantu dalam melacak kemajuan komputasi asinkronus. Berikut adalah contoh penggunaan TQDM dengan AsyncIO:

python
import asyncio
from tqdm.asyncio import tqdm

async def process_item(item):
    # do something with item

async def main():
    tasks = [asyncio.create_task(process_item(item)) for item in my_list]
    for task in tqdm(asyncio.as_completed(tasks), total=len(tasks)):
        await task

await main()

Pada contoh ini, kita membuat coroutine AsyncIO yang disebut process_item() yang melakukan komputasi asinkron pada item tertentu. Kita menggunakan fungsi asyncio.as_completed() untuk membuat daftar coroutine yang ingin kita eksekusi, dan kita menggunakan TQDM untuk membuat bar kemajuan yang melacak kemajuan coroutine saat mereka selesai. Parameter total diatur ke panjang daftar tugas, yang memastikan bahwa bar kemajuan mencerminkan dengan akurat kemajuan komputasi asinkron.

Referensi

https://github.com/tqdm/tqdm
https://tqdm.github.io/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!