from tqdm import tqdm, trange # 导入 tqdm 进度条库
效果大致是这样的:方便看程序的运行进度。
介绍tqdm库中的两个类分别是tqdm和trange都可以实现进度条功能。
两者区别:
tqdm
: 是一个通用的进度条工具,可以对任何可迭代对象进行包装。例如,您可以使用tqdm
来包装一个列表、字典、文件等,从而在迭代过程中显示进度条。
trange
: 是tqdm
的一个封装,专门用于生成范围(range)的进度条。实际上,trange
是tqdm(range(n))
的简写形式,适用于简单的迭代。
总的来说:tqdm 适用范围广,trange 写法更简洁。
1.对于tqdm:
生成 阶乘的列表:
from tqdm import tqdm
import math
results = []
for i in tqdm(range(7000)):
results.append(math.factorial(i))
# 也可以用列表推导式
results = [math.factorial(x) for x in tqdm(range(7000))]
2.对于trange:
把 tqdm(range(7000))变成 trange(7000)
对于range范围的写法更简洁
进度条样式的设置
因为在训练会分轮分批的时候,如果进度条都一个样就不好看了
with trange(1000) as t:
for i in t:
t.set_description(f'轮次: {i+1}')
sleeping_time = random.randint(1, 100) / 100
time.sleep(sleeping_time)
for j in trange(10):
time.sleep(0.5)
t.set_postfix(something=random.randint(0,100), sleeping_time=sleeping_time)
set_description用来设置进度条的描述信息,set_postfix用来设置进度条的后缀信息
效率的提升---joblib
joblib
的并行计算可以提高了计算效率,尤其是在处理大量数据。
results = Parallel(n_jobs=3)(delayed(math.factorial)(x) for x in tqdm(range(8000)))
parallel可以并行执行任务,用3个cpu同时执行任务,delayed可以完成任务的拆分
完整源码,方便对比学习。
from tqdm import tqdm, trange
import math
from joblib import Parallel, delayed
import time
import random
# results = []
# for i in tqdm(range(8000)):
# results.append(math.factorial(i))
# results = [math.factorial(x) for x in tqdm(range(8000))]
results = Parallel(n_jobs=3)(delayed(math.factorial)(x) for x in tqdm(range(8000)))
# # parallel可以并行执行任务,delayed可以完成任务的拆分,tqdm可以显示进度条
# # 分轮次分批次训练
# with trange(1000) as t:
# for i in t:
# t.set_description(f'轮次: {i+1}')
# sleeping_time = random.randint(1, 100) / 100
# time.sleep(sleeping_time)
# for j in trange(10):
# time.sleep(0.5)
# t.set_postfix(something=random.randint(0,100), sleeping_time=sleeping_time)
'''
tqdm可以显示进度条,trange用来显示进度条,
set_description用来设置进度条的描述信息,set_postfix用来设置进度条的后缀信息,
'''