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)))

浙公网安备 33010602011771号