×

tqdm giúp hiển thị thanh tiến trình cho các vòng lặp dài trong Python

Trong lập trình Python, việc xử lý các vòng lặp dài có thể làm cho chương trình của bạn trở nên chậm chạp và khó theo dõi tiến trình thực hiện. Để cải thiện trải nghiệm lập trình, đặc biệt khi phải thao tác trên những tác vụ tốn thời gian như xử lý dữ liệu lớn hay tải file từ internet, việc sử dụng thanh tiến trình là rất hữu ích. Một trong những công cụ phổ biến nhất cho mục đích này là thư viện tqdm. Thư viện này không chỉ dễ sử dụng mà còn đẹp mắt và có thể tích hợp dễ dàng vào những vòng lặp của bạn.

Tqdm giúp lập trình viên có thể theo dõi thời gian hoàn thành, số lượng phần tử đã xử lý và tốc độ xử lý. Bài viết này sẽ đi sâu vào việc sử dụng thư viện tqdm, từ cách cài đặt, sử dụng trong các vòng lặp và các tùy chọn tùy chỉnh để giúp bạn tạo ra các giao diện người dùng tốt hơn cho các tác vụ dài hạn.

Cài đặt thư viện tqdm

Trước khi bắt đầu sử dụng tqdm trong dự án của bạn, bạn cần cài đặt thư viện này. Cách cài đặt đơn giản nhất là sử dụng pip. Bạn có thể mở terminal hoặc command prompt và sử dụng lệnh sau:

pip install tqdm

Sau khi cài đặt thành công, bạn có thể bắt đầu sử dụng tqdm trong mã nguồn Python của mình.

Sử dụng tqdm trong các vòng lặp

Một trong những cách đơn giản nhất để sử dụng tqdm là bao bọc vòng lặp của bạn bằng tqdm(). Dưới đây là một ví dụ đơn giản:

from tqdm import tqdm
import time

# Vòng lặp với tqdm
for i in tqdm(range(100)):
    time.sleep(0.1)  # Giả lập một tác vụ tốn thời gian

Trong đoạn mã trên, tqdm sẽ hiển thị một thanh tiến trình trong console khi vòng lặp đang chạy. Bạn có thể thấy số lượng vòng lặp đã hoàn thành, số lượng còn lại, và thời gian ước tính để hoàn thành toàn bộ vòng lặp.

Tùy chỉnh thanh tiến trình

Tqdm cho phép bạn tùy chỉnh thanh tiến trình để hiển thị thông tin mà bạn mong muốn. Dưới đây là một vài tùy chọn giúp bạn tùy chỉnh thanh tiến trình:

Đặt tên cho thanh tiến trình

Bạn có thể thêm một thông điệp tùy chỉnh vào thanh tiến trình bằng cách sử dụng tham số desc:

for i in tqdm(range(100), desc="Processing"):
    time.sleep(0.1)

Điều chỉnh tốc độ cập nhật

Cũng có thể thay đổi tốc độ cập nhật của thanh tiến trình thông qua tham số mininterval, giúp bạn chỉ định khoảng thời gian tối thiểu giữa các lần cập nhật:

for i in tqdm(range(100), mininterval=1):
    time.sleep(0.1)

Thiết lập giá trị tối đa

Đôi khi bạn có thể muốn thiết lập giá trị tối đa cho thanh tiến trình. Bạn có thể làm điều này bằng cách sử dụng tham số total:

pbar = tqdm(total=50)
for i in range(50):
    time.sleep(0.1)
    pbar.update(1)
pbar.close()

Trong ví dụ này, thanh tiến trình được khởi tạo với một giá trị tối đa là 50, và sau mỗi lần thực hiện, bạn cập nhật thanh tiến trình bằng cách gọi pbar.update(1).

Sử dụng tqdm với các thư viện khác

Tqdm không chỉ hữu ích trong các vòng lặp thông thường mà còn có thể được tích hợp với nhiều thư viện khác nhau như pandas, numpy hay requests. Dưới đây là một vài ví dụ về cách sử dụng tqdm với các thư viện này.

Sử dụng tqdm với pandas

Khi làm việc với pandas, bạn có thể sử dụng tqdm để theo dõi quá trình xử lý các hàng trong DataFrame. Để làm điều này, bạn sẽ cần sử dụng phương thức progress_apply():

import pandas as pd
from tqdm import tqdm

tqdm.pandas()  # Khởi tạo tqdm với pandas

df = pd.DataFrame({'A': range(100)})
df['B'] = df['A'].progress_apply(lambda x: x * 2)

Sử dụng tqdm với requests

Khi tải xuống file từ internet, bạn có thể sử dụng tqdm để theo dõi quá trình tải. Dưới đây là cách sử dụng:

import requests
from tqdm import tqdm

url = 'https://example.com/file.zip'
response = requests.get(url, stream=True)
total_size = int(response.headers.get('content-length', 0))
block_size = 1024  # 1 KB

with open('file.zip', 'wb') as file, tqdm(
    desc='Downloading',
    total=total_size,
    unit='KB',
    unit_scale=True,
    unit_divisor=1024,
) as bar:
    for data in response.iter_content(block_size):
        file.write(data)
        bar.update(len(data))

Trong ví dụ trên, thanh tiến trình sẽ cập nhật theo từng khối dữ liệu được tải xuống.

Kết luận

Thư viện tqdm là một công cụ rất hữu ích giúp lập trình viên Python theo dõi và quản lý tiến trình của các vòng lặp một cách hiệu quả. Việc sử dụng tqdm có thể làm cho mã nguồn của bạn trở nên thân thiện và dễ đọc hơn, đồng thời cung cấp thông tin giá trị về hiệu suất của chương trình.

Nếu bạn đang làm việc với các tác vụ dài hạn trong Python, hãy xem xét sử dụng tqdm để nâng cao trải nghiệm lập trình của mình. Những tùy chọn tùy chỉnh mà thư viện cung cấp cũng cho phép bạn tạo ra giao diện người dùng dễ sử dụng và hiệu quả. Hy vọng rằng bài viết này đã cung cấp cho bạn những thông tin cần thiết về việc sử dụng tqdm trong Python!

Comments