html video显示进度条_使用 tqdm 在 Python 应用中显示进度 | Linux 中国

860b162e4df481de3daff507ab4c86f4.png
如果你的程序需要一段时间才能显示结果,可通过显示它的进度来避免让用户感到沮丧。
  • 来源:https://linux.cn/article-12990-1.html
  • 作者:Moshe Zadka
  • 译者:geekpi

(本文字数:3093,阅读时长大约:3 分钟)

阿拉米语,希伯来语和阿拉伯语中的闪米特语根 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)

2e2328c05dbc064a9f20033e69272aa0.png
tqdm output

精确了到小数点后 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.4081854901728303

1ca26bdc966474b1d70f5b0ce5898cbd.png
tqdm 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(total=total) as progress:for chunk in response.iter_bytes():progress.update(len(chunk))

6b6d1f7fcd25eb314f36cc2acd1977ad.png
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(total=total, desc=fname) as progress:current = 0while current < total:chunk_size = min(random.randrange(10**3, 10**5), total - current)current += chunk_sizeif random.uniform(0, 1) < 0.01:time.sleep(0.1)progress.update(chunk_size)

2b48283b800bf1220a772733cad78e16.png
tqdm output

所以,如果你的程序需要一段时间才能显示最终结果,为避免让你的用户感到沮丧。请显示它的进度!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

课题开题报告范文样本_成都汽车职业技术学校举行 2020年省、市、区课题开题报告会...

01为深入贯彻落实国务院、省、市、区关于深化教育教学改革的重要精神,充分发挥教育科研的先导作用,明晰课题研究的思路并提高课题研究的针对性,1月12日,成都汽车职业技术学校举行2020年省、市、区课题开题报告会。本次开题报告会邀…

vsftp日志查看_vsftp日志xferlog格式分析(示例代码)

1、开始vsftp记录日志。修改/etc/vsftpd/vsftpd.conf 如下:xferlog_enableYESxferlog_std_formatYESxferlog_file/var/log/xferlogFTP服务器的日志设置,可以通过修改主配置文件/etc/vsftpd.conf实现。主配置文件中与日志设置有关的选项包括xferlog_enabl…

安装mysql5 1步骤_Linux系统安装MySQL详细步骤(mysql-5.1等)

第一步、查找以前是否安装有mysql使用下面命令:rpm -qa|grep -i mysql如果显示有包则说明已安装mysql第二步、如果已安装,则需要删除已安装的数据库可按以下步骤删除数据库:删除包命令:rpm -e --nodeps 【包名】rpm -e --nodeps …

mysql分页查询关键_MySQL优化教程之超大分页查询

背景基本上只要是做后台开发,都会接触到分页这个需求或者功能吧。基本上大家都是会用MySQL的LIMIT来处理,而且我现在负责的项目也是这样写的。但是一旦数据量起来了,其实LIMIT的效率会极其的低,这一篇文章就来讲一下LIMIT子句优化…

mysql r_R之RMySQL

linux,mysql和R的版本信息:Linux naci 3.19.0-16-generic #16-Ubuntu SMPServer version: 5.6.24-0ubuntu2 (Ubuntu)R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet"mysql的linux安装,参照上一篇关于liunx下安装mysql的文章。1.…

mysql 字符转换函数是_MySQL日期和字符串转换函数

Mysql中to_char()和str_to_date()函数转载路径:https://blog.csdn.net/ricardo_mli/article/details/802175121.字符串转换成日期格式str_to_date(date,’%Y-%m-%d’)----->相当于Oracle中的to_char();例子:INSERT INTOt_order(order_time)VALUES(str…

mysql数据加百分号_使用MySQL SELECT语句时,在每个值的末尾添加一个百分号(%)...

要在末尾添加百分号,请使用CONCAT()函数。让我们首先创建一个表-mysql> create table DemoTable(StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,StudentName varchar(100),StudentScore int);使用插入命令在表中插入一些记录-mysql> insert into DemoTa…

mysql 分页 jdbc_JDBC调用MySQL分页存储过程实现(一)

DROP PROCEDURE IF EXISTS pro_pager;CREATE DEFINER root% PROCEDURE pro_pager(in p_pageNo int, /*当前页*/in p_perPageCnt int, /*每页记录数*/in p_sql VARCHAR(2000), /*查询sql语句*/out v_totalRowsCnt int, /*记录总条数*/out v_totalPageCnt int) /*记录总页数*/BE…

mariadb mysql表_mysql/mariadb学习记录——创建删除数据库、表的基本命令

查看已有的数据库:mysql>show databases;--------------------| Database |--------------------| information_schema || test |--------------------2 rows in set (0.05 sec)新建数据库语句:mysql>create database wzu;Query OK,1 row affected (0.05sec)m…

zabbix proxy mysql_zabbix proxy 配置

在监控大量服务器时,如果将所有的请求都发送到一个zabbix server上,将会对我们的zabbix server造成很大的压力,我们在规划多个区域或机房进行监控的时候,会考虑到使用zabbix proxy 来代理zabbix server 的部分功能。zabbix server…

mysql修改数据库结构用哪一项_mysql alter修改数据库表结构用法

1.alter操作表字段(1)增加字段alter table 表名 add 字段名 字段类型;alter table student add name varchar(10);(2)修改字段alter table 表名 change 旧字段名 新字段名 字段类型;alter table 表名 modify 字段名 字段类型;//修…

mvc mysql linq_MVC3+Linq to sql 显示数据库中数据表的数据

1:首先创建asp.net mvc3应用程序 2:创建项目完成后 找到controllers文件鼠标右击选择添加控制器 3 为models文件夹添加一个linq to sql类文件,然后把数据库中的数据库复制进来。如截图操作 4:添加控制器好后会生成一个HomeControl…

bash给脚本加进度条_shell脚本实现多彩进度条

代码如下:1 #!/bin/bash2 i0;3 str""4 arr("|" "/" "-" "\\")5 while [ $i -le 100 ]6 do7 let indexi%48 let indexcolori%89 let color30indexcolor10 printf "\e[0;$color;1m[%-100s][%d%%]%c\r" &…

koa mysql mongodb_koa 操作MongoDB数据库

安装安装MongoDBnpm install mongodb --save引入中间件引入mongodb下面的连接模块MongoClient// 引入MongoDB 连接模块const MongoClient MongoDB.MongoClient;配置中间件定义数据库连接的地址以及配置数据库的名称let url "mongodb://localhost:27017/";let dbNam…

mysql 64位 安装1045_MySql 安装时的1045错误

MySql 安装到最后一步遇到1045错误Access denied for user rootlocalhost (usingpassword:YES)解决方案一:卸载MySQL,重新安装1, 卸载MySQL2, 删除目录 C:\Documents and Settings\All Users\ApplicationData\MySQL,还要删除MySQL安装目录3, 重新安装MyS…

mysql工作表格制作教程_Access制作复杂报表

何制作复杂报表利用excel输出复杂报表 在读这篇文章以前首先要提醒大家,Access 本身的报表也具有很强的实用性和强大的功能,只有当你发掘了其本身全部的功能却仍不能满足你对报表的特殊要求时才请使用 Excel 输出报表。很明显,使用 Excel 输出…

php+mysql投票代码_PHP+jQuery+MySql实现红蓝投票功能

本文是一篇综合知识应用类文章,需要您具备PHP、jQuery、MySQL以及html和css方面的基本知识。本文在《PHPMySqljQuery实现的“顶”和“踩”投票功能》一文基础上做了适当改进,共用了数据表,您可以先点击了解这篇文章。HTML我们需要在页面中展示…

numpy 最大值_第 85 天:NumPy 统计函数

数学统计在我们的程序当中特别是数据分析当中是必不可少的一部分,本文就来介绍一下 NumPy 常见的统计函数。最大值与最小值numpy.amin()用于计算数组中的元素沿指定轴的最小值。可以通过 axis 参数传入坐标轴来指定统计的轴,当指定 axis 时,a…

java中如何实现变量可配置_Java基础-如何配置环境变量

Java环境变量详细教程第一步、打开电脑环境变量设置窗口以Win10系统为例子。在桌面找到此电脑,右键此电脑— —>属性,点击属性— —>点击左侧高级系统设置点击高级系统设置点击环境变量第二步、新建JAVA_HOME点击系统变量中的新建,出现输入框&…

python三引号解析_[宜配屋]听图阁

和C语言一样,引号属于特殊功能字符,不能够像普通字符那样直接通过print打印,需要进行一些处理,比如说反斜杠转义等。这里介绍几种打印三引号的方法,希望对需要的朋友有用。1、第一中方法比较简单,直接使用三…