首页 > 编程语言 >Python制作进度条

Python制作进度条

时间:2022-12-01 10:48:34浏览次数:85  
标签:tqdm bar name 进度条 Python 制作 sleep proc

目录
本博客主要参考为北京大学陈斌老师的下一站Python

image

tqdm进度条

什么时候需要进度条?

  • 长时间的循环,让等待变得更加友好;
  • 统计运行时间和每次迭代平均时间;
  • 给人印象深刻的动态输出画面。

tqdm基本概念

  • 包裹并替代原有的可迭代对象,自动显示进度条;
  • 可以设定自定义信息;
  • 也可以自行控制进度条进展。

基础用法

# 准备测试数据
from time import sleep
from faker import Faker
f = Faker("en-us")
alist = [f.name() for _ in range(50)]

# 导入tqdm模块
from tqdm import tqdm, trange

用tqdm包裹range即可

p = 1
for i in tqdm(range(50)):
    p *= (i + 1)
    sleep(0.05)
print(f"{p=:,}")

或者可以用trange()达到相同的效果

p = 1
for i in trange(50): 
    p *= (i + 1)
    sleep(0.05)
print(f"{p=:,}")

对于其它可迭代对象,直接用tqdm包裹起来

s = ""
for name in tqdm(alist):
    s += f"{name=} "  # 假装处理一下
    sleep(0.05)
print(s)

设置进度条信息

# 处理中的信息
proc_bar = tqdm(range(50))
p = 1
for i in proc_bar:
    proc_bar.set_description(f"正在计算{i=:02d}")  # 设定前导信息
    p *= (i + 1)
    sleep(0.05)
print(f"{p=:,}")

或者把信息放在进度条后面

# 显示信息
proc_bar = tqdm(alist)
s = ""
for name in proc_bar:
    proc_bar.set_postfix({"正在处理":f"{name}"})  # 加在后面
    s += f"{name=} "  # 假装处理一下
    sleep(0.05)
print(s)

自定义控制

有时候我们不是直接用for循环迭代一个对象,例如使用opencv从视频中抽帧做处理。

# 自定义进度条
proc_bar = tqdm(total=100)  # 进度条对象
p = 1
n = 40
for i in range(n):
    #proc_bar.set_description(f"正在计算{i=:02d}")
    proc_bar.update(100/n)  # 更新进度条显示
    p *= (i + 1)
    sleep(0.05)
proc_bar.close()  # 关闭进度条,释放资源
print(f"{p=:,}")

例子:

cap = cv2.VideoCapture(path)
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
with tqdm(total=total_frames) as pbar:
	pbar.set_description("Extracting all frames")
	while cap.isOpened():
		ret, frame = cap.read()
		pass # process(frame)
		cv2.imshow(frame, "frame")
		pbar.update(1)
		if cv2.waitKey(1)&0xFF == ord('q'):
                break

图形化进度条

from tqdm.tk import tqdm
# from tqdm.gui import tqdm
# from tqdm.rich import tqdm
s = ""
for name in tqdm(alist):
    s += f"{name=} "  # 假装处理一下
    sleep(0.05)
print(s)

标签:tqdm,bar,name,进度条,Python,制作,sleep,proc
From: https://www.cnblogs.com/coco02/p/16940665.html

相关文章

  • python3 venv虚拟环境创建与安装Django
    创建虚拟环境C:\Users\Xiao>python-mvenvD:\Pythonwork\venvtest​​激活虚拟环境C:\Users\Xiao>D:\Pythonwork\venvtest\Scripts\activate(venvtest)C:\Users\Xiao>​......
  • Python高级-GIL(全局解释器锁)-笔记
    GIL面试题如下描述PythonGIL的概念,以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因。Guido的声明:​​h......
  • 本地YUM源制作
    1、wget批量下载rpm包https://www.cnblogs.com/xing-29391/p/16755039.htmlwget-nd-r-l1--no-parenthttp://ooxx.com/packages/下载packages目录下所有文件:-nd不......
  • python-解力扣题【回文数】
    1.题目以及解题代码解题思路:将整数转换成字符串,然后对比反转后的字符串与原字符串对比,相同就返回true ......
  • Python高级-深拷贝、浅拷贝-笔记
    1.浅拷贝浅拷贝是对于一个对象的顶层拷贝通俗的理解是:拷贝了引用,并没有拷贝内容2.深拷贝深拷贝是对于一个对象所有层次的拷贝(递归)进一步理解深拷贝 3.拷贝的其他方式......
  • Python高级-深拷贝、浅拷贝-笔记
    私有化xx:公有变量_x:单前置下划线,私有化属性或方法,fromsomemoduleimport*禁止导入,类对象和子类可以访问__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直......
  • Python高级-import导入模块-笔记
    1.import搜索路径路径搜索从上面列出的目录里依次查找要导入的模块文件''表示当前路径列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序程序执行时添加......
  • python知识点
    一、pip工具常用的子命令1、install,用于安装库;2、download,用于下载库;3、uninstall,用于卸载库;4、freeze,用以requirements格式导出安装包;5、show,查看某个包的信息6、li......
  • 单文件版软件怎么制作?使用VMWare ThinApp制作单文件软件教程
    一、概述最近弄到了一个非常简单的单文件软件制作工具,VMWareThinApp,今天小编就来和大家一起学习学习如何制作单文件版软件,这里就先以快播做个示范二、软件特色1、操作......
  • 2022最新苹果iOS证书制作教程
     众所周知,如果你需要上架苹果APP就必须要苹果iOS证书进行APP签名,否则苹果手机将无法安装你开发的APP,废话不多说,直接上教程。第一步,注册账号准备appleid必须开通双......