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
可以与多线程和多进程一起使用,通过ThreadPool
或ProcessPool
:
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)))