Python 进度条tqdm

 在编写Python脚本时,尤其是那些需要处理大量数据或者执行耗时操作的脚本,监控任务进度是非常重要。

tqdm的安装

pip install tqdm -i https://pypi.tuna.tsinghua.edu.cn/simple/

  

基本用法

from tqdm import tqdm
import time

for i in tqdm(range(100)):
    time.sleep(0.1)  # 模拟一些耗时操作

  我们使用tqdm(range(100))替代了普通的range(100),这会在循环执行时显示一个进度条。

 

自定义进度条

tqdm 允许我们自定义进度条的许多属性,例如描述文字、进度条格式等:

这个代码里添加了desc参数来设置进度条的描述,ncols参数来设置进度条的宽度,ascii参数来使用ASCII字符显示进度条。

from tqdm import tqdm
import time

for i in tqdm(range(100), desc="进度条描述信息", ncols=100, ascii=True):
    time.sleep(0.1)

  

 

在函数中使用tqdm

可以在任何可迭代对象前使用tqdm,例如列表、生成器等:

 
from tqdm import tqdm
import time


def process_items(items):
    for _ in tqdm(items, desc="进度条描述信息"):
        time.sleep(0.1) 


items = list(range(100))
process_items(items)

  

 

高级用法

tqdm 还支持嵌套进度条、在多线程和多进程环境中使用等高级功能。

嵌套进度条

当有多重嵌套循环时,可以使用tqdm的嵌套进度条:

from tqdm import tqdm
import time

for i in tqdm(range(3), desc="一层循环进度条描述信息"):
    for j in tqdm(range(100), desc="二层循环进度条描述信息", leave=False):
        time.sleep(0.01)

  

多线程和多进程

tqdm 可以与多线程和多进程一起使用,通过ThreadPoolProcessPool

from tqdm import tqdm
from concurrent.futures import ThreadPoolExecutor
import time

def process_item(item):
    time.sleep(0.1)
    return item


items = list(range(100))

with ThreadPoolExecutor(max_workers=4) as executor:
    list(tqdm(executor.map(process_item, items), total=len(items))) 
posted @ 2024-07-08 10:14  北京测试菜鸟  阅读(136)  评论(0编辑  收藏  举报