Python tqdm使用方法

简介: Python tqdm使用方法

0. 前言

学习深度学习神经元网络时接触到tqdm模块,在训练大型网络时需要等很长时间,tqdm能把训练的进度及预估完成时间可视化展现出来。推而广之,只要在涉及到大型循环运行的代码,tqdm模块都是一个很好用的可视化进度条工具。对于用户来说,看到进度条可以让他们了解任务正在进行,而不是程序卡住或无响应。这提高了用户对应用程序的信任和满意度。

1. tqdm介绍

tqdm是阿拉伯语taqaddum(意为“进度”)的缩写,也是西班牙语“I love you so much”的缩写

tqdm derives from the Arabic word taqaddum (تقدّم) which can mean “progress,” and is an abbreviation for “I love you so much” in Spanish (te quiero demasiado).

tqdm是一个在Python中广泛使用的进度条库。以下是对tqdm库的主要特点和使用介绍:

1.1 功能:
  • tqdm提供了一个直观的命令行进度条,可以在循环或迭代过程中显示任务的完成进度。
  • 进度条会动态更新,显示已处理的项数、总体估计时间和剩余时间等信息。
  • 它可以与任何迭代器或生成器一起使用,只需要将迭代器包裹在tqdm(iterator)函数中即可。
1.2 易用性:
  • 使用tqdm非常简单,无需复杂的配置,只需在需要显示进度的地方插入一行代码即可。
  • 它可以无缝集成到你的代码中,不需要对现有逻辑进行重大修改。
1.3 定制化:
  • tqdm允许用户自定义进度条的样式和行为,包括但不限于:
  • 设置总体任务的数量(如果已知)。
  • 修改显示格式,包括显示百分比、ETA(预计到达时间)、速度等。
  • 设置进度条的颜色、大小和位置。
  • 添加自定义消息和标签。
1.4 并行支持:
  • tqdm支持多线程和多进程的进度跟踪,可以方便地在并行计算环境中显示各个任务的进度。
1.5 智能暂停和恢复:
  • 当终端输出被其他内容覆盖时,tqdm可以智能地暂停和恢复进度条的显示。
1.6 适应性强:
  • tqdm可以在各种环境下工作,包括Jupyter Notebook、IPython console、普通的命令行界面等。

2. tqdm使用实操

2.1 循环进度跟踪

非常简单,只要把要循环的内容嵌套在tqdm中即可,例:

from tqdm import tqdm
import time
 
l = ['a','b','c','d','e']
 
for i in tqdm(range(5)):
    print(i)
    time.sleep(1)
    for j in tqdm(l):
        time.sleep(1)

这样就可以看到循环语句的进度条了:

这里可以看到相关的时间参数:已进行时间/剩余预估时间/每次循环需要时间。

2.2 并行计算进度跟踪

tqdm也支持并行计算的进度跟踪。

from concurrent.futures import ThreadPoolExecutor
from tqdm import tqdm
 
def long_running_task(num):
    time.sleep(0.1)  # 模拟耗时操作
    return num * num
 
with ThreadPoolExecutor() as executor:
    futures = {executor.submit(long_running_task, num) for num in range(100)}
    
    for future in tqdm(as_completed(futures), total=len(futures)):
        result = future.result()
        print(result)

在这个例子中,我们使用了concurrent.futures库进行多线程计算,并使用tqdm来跟踪每个任务的完成情况。as_completed函数返回的是一个生成器,我们可以将其传递给tqdm来显示进度条。

2.3 tqdm自定义参数

可以通过传递参数来自定义进度条的行为和样式。

from tqdm import tqdm
import time
 
# 设置总任务数为100
total_tasks = 100
 
# 自定义进度条的描述信息和单位
for i in tqdm(range(total_tasks), desc='Processing tasks', unit='task'):
    time.sleep(0.1)  # 模拟耗时操作
 
# 设置进度条的样式和格式
for i in tqdm(range(total_tasks), bar_format='{l_bar}{bar}| {n_fmt}/{total_fmt} [elapsed: {elapsed} remaining: {remaining}]'):
    time.sleep(0.1)

在这个例子中,我们设置了进度条的描述信息为"Processing tasks",单位为"task"。在第二个循环中,我们还修改了进度条的显示格式,包括当前进度、总任务数、已用时间和剩余时间。


相关文章
|
2月前
|
JSON JavaScript 前端开发
Python中使用JsonPath:概念、使用方法与案例
Python中使用JsonPath:概念、使用方法与案例
57 0
|
5月前
|
开发工具 git Python
python之 libnum库安装使用方法
python之 libnum库安装使用方法
|
7月前
|
Python
python之算术运算符,复合运算符,逻辑运算符,比较运算符的定义及其使用方法
python之算术运算符,复合运算符,逻辑运算符,比较运算符的定义及其使用方法
|
7月前
|
Python
python之有关匿名函数和偏函数的定义,优点,以及使用方法
python之有关匿名函数和偏函数的定义,优点,以及使用方法
|
7月前
|
编译器 Python
python之局部变量和全局变量的定义,两者之间的区别和使用方法,global和nonlocal的定义和使用方法,可变与不可变类型的定义和示例
python之局部变量和全局变量的定义,两者之间的区别和使用方法,global和nonlocal的定义和使用方法,可变与不可变类型的定义和示例
|
7月前
|
Python
python之if语句的单分支,双分支,多分支,if逻辑运算符or,if逻辑运算符and,if语句的嵌套的定义及其使用方法
python之if语句的单分支,双分支,多分支,if逻辑运算符or,if逻辑运算符and,if语句的嵌套的定义及其使用方法
140 0
|
2月前
|
存储 安全 网络安全
python urlopen 的使用方法介绍
python urlopen 的使用方法介绍
20 0
|
3月前
|
存储 索引 Python
一文掌握python列表的所有使用方法(零基础学python(一))
一文掌握python列表的所有使用方法(零基础学python(一))
41 0
|
7月前
|
算法 数据挖掘 Python
Python列表的灵活使用方法
更多内容关注我的微信公众号:python学习杂记
|
7月前
|
Python
python之列表中常用的函数:append,extend,insert,pop,remove,del函数的定义与使用方法,元素是否在列表中的判断
python之列表中常用的函数:append,extend,insert,pop,remove,del函数的定义与使用方法,元素是否在列表中的判断