Tres métodos de usar tqdm para dibujar barras de progreso en la programación de python

1. Introducción a tqdm

tqdm es una biblioteca de barra de progreso de Python que puede agregar un mensaje de aviso de progreso en un bucle largo de Python.

2. 3 formas de uso

1.tqdm(rango)-actualización automática

import time
from tqdm import range

# 自动更新
for i in tqdm(range(10)): # 共可以更新10次进度条
    time. Sleep(0.5) # 每次更新间隔0.5s

range(10) significa que la barra de progreso aquí se puede actualizar 10 veces. Dado que se trata de una actualización automática, la barra de progreso 1 se actualizará en un ciclo y el intervalo entre cada actualización es de 0,5 s.

2.trange()-actualización automática

import time
from tqdm import trange

for i in trange(10):
    time.sleep(0.5)

Esto funciona igual que el método 1.

3. Actualizaciones de control manual

from tqdm import tqdm

# 用with语句,进度条完成后会自动关闭
with tqdm(total=10) as pbar:
    for i in range(10):
        time. Sleep(0.5)
        pbar.update(1)

# 变量在外部创建,进度结束后手动关闭
phar = tqdm(total=100)
for i in range(100):
    time.sleep(0.1)
    phar.update(1)
phar.close()

El total = 10 aquí significa que la barra de progreso aquí se puede actualizar diez veces. Dado que se trata de una actualización manual, se debe usar el método update(). update (1) significa que la barra de progreso se actualiza en 1 cada vez , y el intervalo entre cada actualización es de 0,5 s.

3. Ejemplos de aplicación

Tome el uso del método 3 en el código relevante como ejemplo, el código se puede escribir de la siguiente manera:

# 开始训练
for epoch in range(num_epochs):
    train_l_sum, train_acc_sum, n, start = 0.0, 0.0, 0, time. Time()
    with tqdm(total=468, desc="Epoch: %d" % epoch) as pbar:
        for idx, (X, y) in enumerate(train_iter, 0):
            X = X.to(device)
            y = y.to(device)
            y_hat = net(X)
            l = loss(y_hat, y).sum()
            optimizer.zero_grad()
            l.backward()
            optimizer. Step()
            train_l_sum += l.item()
            train_acc_sum += (y_hat.argmax(dim=1) == y).float().sum().item()
            n += y.shape[0]
            pbar.update(1) # 更新一次进度1
        test_acc = evaluate_accuracy(test_iter, net)
        # 在进度条上显示有关信息
        pbar.set_postfix({
            'loss': '%.4f' % (train_l_sum / n),
            'train acc': '%.3f' % (train_acc_sum / n),
            'test acc': '%.3f' % test_acc ,
            'time': '%.1f time. Time.time() - start)
        })

Supongo que te gusta

Origin blog.csdn.net/Er_Studying_Bai/article/details/128354504
Recomendado
Clasificación