大家好,在编写Python脚本时,尤其是那些需要处理大量数据或者执行耗时操作的脚本,监控任务进度是非常重要的。
有没有想过在你的Python脚本中添加一个进度条,让你可以清楚地看到任务的完成进度?这时候,tqdm
库就派上用场了。
什么是tqdm?
tqdm
是一个快速、可扩展的 Python 进度条库。它的名字来自阿拉伯语“taqaddum”,意思是“进步”。使用tqdm
,你可以非常轻松地在 Python 脚本中添加进度条,而无需编写复杂的代码。
为什么使用tqdm?
- • 简单易用:只需在迭代对象前添加
tqdm
,就可以显示进度条。 - • 功能丰富:支持自定义进度条样式、嵌套进度条、在多线程或多进程环境中使用等。
- • 高效:对性能几乎没有影响,可以流畅运行在大多数环境中。
tqdm的安装
pip install tqdm
基本用法
让我们从最简单的用法开始:
from tqdm import tqdm
import time
# 简单的循环
for i in tqdm(range(100)):
time.sleep(0.1) # 模拟一些耗时操作
在上面的代码中,我们使用tqdm(range(100))
替代了普通的range(100)
,这会在循环执行时显示一个进度条。
自定义进度条
tqdm
允许我们自定义进度条的许多属性,例如描述文字、进度条格式等:
from tqdm import tqdm
import time
for i in tqdm(range(100), desc="Processing", ncols=100, ascii=True):
time.sleep(0.1)
在这段代码中,我们添加了desc
参数来设置进度条的描述,ncols
参数来设置进度条的宽度,ascii
参数来使用ASCII字符显示进度条。
在函数中使用tqdm
你可以在任何可迭代对象前使用tqdm
,例如列表、生成器等:
from tqdm import tqdm
import time
def process_items(items):
for item in tqdm(items, desc="Processing items"):
time.sleep(0.1) # 模拟处理时间
items = list(range(100))
process_items(items)
在Pandas中使用tqdm
如果你经常处理数据,可能会使用Pandas库。幸运的是,tqdm
与Pandas也可以很好地结合:
import pandas as pd
from tqdm import tqdm
tqdm.pandas(desc="Processing DataFrame")
df = pd.DataFrame({"a": range(100)})
df["a"].progress_apply(lambda x: time.sleep(0.1)) # 模拟处理时间
进阶用法
tqdm
还支持嵌套进度条、在多线程和多进程环境中使用等高级功能。
嵌套进度条
当你有多重嵌套循环时,可以使用tqdm
的嵌套进度条:
from tqdm import tqdm
import time
for i in tqdm(range(3), desc="Outer Loop"):
for j in tqdm(range(100), desc="Inner Loop", leave=False):
time.sleep(0.01)
多线程和多进程
tqdm
还可以与多线程和多进程一起使用,通过ThreadPool
或ProcessPool
:
from tqdm import tqdm
from concurrent.futures import ThreadPoolExecutor
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)))
tqdm
是一个非常有用的库,可以帮助你在执行耗时任务时轻松地监控进度。它不仅使用简单,而且功能丰富,适用于各种场景。
原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/89490.html