您现在的位置是:亿华云 > 系统运维
使用 tqdm 在 Python 应用中显示进度
亿华云2025-10-09 12:57:59【系统运维】3人已围观
简介阿拉米语,希伯来语和阿拉伯语中的闪米特语根 q-d-m 通常与前进或进度有关。阿拉伯语 taqaddum (تقدّم)的意思是“进度”。进度是很重要的。正如每部感觉良好的电影都会告诉你,旅程和目的地
阿拉米语,使用示进希伯来语和阿拉伯语中的应用闪米特语根 q-d-m 通常与前进或进度有关。阿拉伯语 taqaddum (تقدّم)的中显意思是“进度”。进度是使用示进很重要的。正如每部感觉良好的应用电影都会告诉你,旅程和目的中显地同样重要。
大多数程序都有一个明确的使用示进目标,一个期望的应用最终状态。有时,中显计算这个最终状态可能需要很长的使用示进时间。虽然计算机没有感情不在乎,应用但人却在乎。中显人类并不乐意坐在原地等待,使用示进而看不到任何明显的应用进展迹象。疑问不断蔓延。中显程序崩溃了吗?磁盘性能是否抖动?操作系统是否把所有的计算资源都分配给了其他任务?
就像正义一样,进度必须被看到,而不仅仅是完成。Python 库 tqdm 有助于使进度变得明确。高防服务器
tqdm 模块可在控制台下工作,但它也专门支持了我最喜欢的环境之一 Jupyter。要在 Jupyter 中使用 tqdm,你需要导入 notebook 子模块并安装 ipywidgets 。notebook 子模块与 tqdm 接口兼容。
这意味着你可以做一些导入时操作来导入正确的模块,同时保持 tqdm 的用法不变。诀窍是检查 __main__ 模块是否具有全局变量 get_ipython。虽然这只是一个启发式的方法,但却是一个相当准确的方法:
import sys if hasattr(sys.modules["__main__"], "get_ipython"): from tqdm import notebook as tqdm else: import tqdm最简单的情况是,某件事情需要运行一定的迭代次数(事先已知),而每一次迭代的时间都差不多。例如,有一个计算任何数字的平方根的算法,通过从 1 作为猜测值开始,然后计算出一个改进后的猜测值:
def improve_guess(rt, n): return (rt + n/rt) / 2一点点的改进可以让你更加接近该平方根。免费信息发布网例如,你可以计算 2 的平方根:
guess = 1 target = 2 for i in tqdm.trange(10): guess = improve_guess(guess, target)
精确了到小数点后 10 位!
round(2 - guess*guess, 10) 0.0一个稍微复杂一点的例子是,当元素的数量是已知的,而处理每个元素需要类似的时间。例如,你可以计算一些数字的乘积。为此,你需要一些随机数:
import random numbers = [random.uniform(0, 2.8) for i in range(100)] numbers[:5] [2.6575636572230916, 0.1286674965830302, 1.0634250104041332, 1.1760969844376505, 0.45192978568125486]现在有了这些数字,可以将它们相乘了。使用 tqdm 最简单的方法是包装一个 Python 迭代函数。数值是一样的,但是 tqdm 会显示一个进度条:
result = 1 for num in tqdm.tqdm(numbers): result *= num result 2.4081854901728303tqdm output
然而,并不是所有的事情都可以预测。最不容易预测的事情之一就是网络速度。当你下载一个大文件时,衡量进度的企商汇唯一方法就是检查已经下载了多少:
url = "https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz" import httpx with httpx.stream("GET", url) as response: total = int(response.headers["Content-Length"]) with tqdm.tqdm(totaltotal=total) as progress: for chunk in response.iter_bytes(): progress.update(len(chunk))tqdm output
有时,“嵌套”进度条是有意义的。例如,如果你要下载一个目录,你就需要一个进度条来跟踪文件,并为每个文件设置一个进度条。
下面是一个例子(但没有实际下载一个目录):
files = [f"vid-{ i}.mp4" for i in range(4)] for fname in tqdm.tqdm(files, desc="files"): total = random.randrange(10**9, 2 * 10**9) with tqdm.tqdm(totaltotal=total, desc=fname) as progress: current = 0 while current < total: chunk_size = min(random.randrange(10**3, 10**5), total - current) current += chunk_size if random.uniform(0, 1) < 0.01: time.sleep(0.1) progress.update(chunk_size)tqdm output
所以,如果你的程序需要一段时间才能显示最终结果,为避免让你的用户感到沮丧。请显示它的进度!
很赞哦!(74)
相关文章
- 互联网其实拼的也是人脉,域名投资也是一个时效性很强的东西,一个不起眼的消息就会引起整个域名投资市场的动荡,因此拓宽自己的人脉圈,完善自己的信息获取渠道,让自己能够掌握更为多样化的信息,这样才更有助于自己的域名投资。
- NVIDIA发布云原生超级计算架构:优化算力结构,赋能业务上云,降低数据中心能耗
- 超聚变荣获“ICT中国(2022)典型案例”创新应用类两项大奖
- 焕新上市!易动-超越系列微模块,台达数据中心家族再添全能选手
- cm域名有什么独特之处?新人要了解cm域名哪些?
- 戴尔科技推出业界首款“远边缘”服务器XR4000,充分展现其在边缘服务器领域的远见卓识
- 数据中心的电力需求使伦敦的新房建设更加困难
- 企业应该选择无服务器计算吗?
- 3.dns修改成功后,点击“域名解析”,按提示进行操作。解析格式一般如下:
- 中国算力网新增7个节点,全国AI算力一张网初具雏形
站长推荐
3、商标域名一经注册,就可以作为域名裁决过程中的主要信息之一。这可以大大增加公司被抢注的相关域名胜诉的机会。
为什么选择运营商中立的数据中心
华为助力百度打造新一代数据中心互联网络,实现全光网智能升级
部署时间节省 99.7%,SUSE助力Hexagon实现 IT 现代化
域名不仅仅是一个简单的网站。对于有长远眼光的公司来说,在运营网站之前确定一个优秀的域名对有长远眼光的公司来说是非常重要的。这对今后的市场营销、产品营销和企业品牌建设都具有十分重要的意义。优秀的域名是企业在市场竞争中获得持久优势的利器。
戴尔自动机器学习解决方案 有效降低数据科学门槛推动业务成果转化
戴尔PowerScale存储有效降低企业闪存成本
2022年第十七届中国企业年终评选榜单揭晓:联想ST650 V2服务器荣获2022年度中国IT行业人工智能优秀产品奖