python中tqdm使用,对于for和while下的两种不同情况问题
作者:大橙子的笔记
这篇文章主要介绍了python中tqdm使用,对于for和while下的两种不同情况问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
python tqdm使用,对于for和while下两种不同情况
while,for中使用tqdm
关于"while:"
关于"for:"
结论
进度条出现的形式不一样
使用tqdm绘制进度条的三种方法
tqdm简介
tqdm是一个python进度条库,可以在 Python长循环中添加一个进度提示信息。
3种使用方法
1.tqdm(range)-自动更新
import time from tqdm import range # 自动更新 for i in tqdm(range(10)): # 共可以更新10次进度条 time. Sleep(0.5) # 每次更新间隔0.5s
range(10)意味着这里的进度条可以更新10次,由于这里是自动更新,所以一次循环就会更新进度条1,每次更新间隔0.5s。
2.trange()-自动更新
import time from tqdm import trange for i in trange(10): time.sleep(0.5)
这个的效果和方法1一样。
3.手动控制更新
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()
这里的total=10意味着这里的进度条可以更新十次,由于这里是手动更新,需要使用update()方法,update(1)意味着每次更新进度1,每次更新间隔0.5s。
应用举例
以方法3在有关代码中的使用为例,其代码可以这样写:
# 开始训练 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) })
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。