python 函数进度条怎么_刷新你对进度条的认识,用python写出不一样的进度条

1 简介

在日常工作中,我们运行程序经常会用到「循环迭代」,假如这个执行时间很短,那倒也无所谓。但是有一些过程耗时蛮长的,给其加上「进度条」(progress bar),可以帮我们监控代码执行进度,以及过程出现异常的情况,非常实用。这里为大家介绍Python中非常实用又风格迥异的两个进度条相关库——tqdm与alive-progress的主要用法。

2 tqdm常用方法

tqdm是Python中所有进度条相关库中最出名的,既然是最出名的,自然有它独到之处。

tqdm不仅可以生成基础的可在终端中显示的进度条,还可以配合jupyter notebook和jupyter lab生成更加美观的网页「交互」部件形式的进度条,更是和pandas强强联手,为pandas中的一些操作提供专有的进度条功能。

下面我们来对tqdm的主要功能进行介绍。

2.1 基础用法

因为是第三方库,首先需要利用pip install tqdm或 conda install -c conda-forge tqdm对其进行安装,安装完成后先来看看它最基本的用法:

75df6ff728c8c6182f0e5b1d0213142f.gif

利用tqdm.tqdm,将for循环过程中进行迭代的对象简单包裹,就实现了为循环过程添加进度条以及打印执行速度、已运行时间与预估剩余运行时间等实用信息的功能,同样也可用于「列表推导」:

df39caa5308d2ac62b74fc2c0cb83ae8.gif

而针对迭代对象是range()的情况,tqdm还提供了简化版的trange()来代替tqdm(range()):

84ccd1e71745e9d13794ca73ca9da8db.gif

其附带的参数desc还可以帮助我们设置进度条的说明文字:

cb8b07679df4b77becc2feed5479969f.gif

而如果想要在迭代过程中变更说明文字,还可以预先实例化进度条对象,在需要刷新说明文字的时候执行相应的程序:

560bdae93bc3131d73040d2b0042d3ce.gif

但当迭代的对象长度一开始未知时,譬如对pandas中的DataFrame.itertuples()进行迭代,我们就只能对其执行速度等信息进行估计,但无法看到进度条递增情况,因为tqdm不清楚迭代的终点如何:

6512676e7d2b7bb1752520be5cbdc7a6.gif

2.2 配合jupyter notebook/jupyter lab的美观进度条

tqdm对jupyter notebook和jupyter lab有着特殊的支持,且使用方法非常简单,只需要将原有的from tqdm import XXX的相应功能导入格式修改为from tqdm.notebook import XXX就可以了,以trange为例:

dbad63039e05c595101f726236a4438b.gif

2.3 配合pandas中的apply

tqdm对pandas中的apply()过程提供了特殊的支持,因为pandas中的apply()本质上就是串行循环运算,你可以将pandas中的任何apply操作替换为progress_apply,并且记住每个单独的progress_apply前要先执行tqdm.pandas(),就像下面的例子一样:

a79099e7787362db7bfd7d9d5c59eff7.gif

3 alive-progress常用方法

虽然与tqdm一样都是为了给循环过程加上进度条而诞生的库,但alive-progress相比tqdm增加了更多花样繁多的动态效果,我们通过调用其专门提供的showtime()函数可以查看所有可用的动态进度条样式:

dedfd455531651b39fcca31edc93a42a.gif

同样类似地可以查看所有进度条样式:

e9ac255e79096ef889847600d3c5e1fe.gif

使用起来也是非常简单,但与tqdm用法区别很大,需要配合with关键词,譬如下面我们使用到alive_progress中的alive_bar来生成动态进度条:

6f41141b57cf9e4015047a6f14b46d70.gif

通过修改bar参数来改变进度条的样式:

1f580d8056e087dab4d4e5aa06bb283b.gif

比较遗憾的是目前的alive-progress只能在终端中运行,还没有为jupyter开发更美观的交互式部件,但你可以在譬如网络爬虫等任务中使用它,效果也是很不错的。然后想学习python的同学可以看一下教程。

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

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

相关文章

acer软件保护卡清除工具clear_使用Windows 10内置工具释放硬盘空间的最佳方法

如果您的磁盘空间不足,可以使用 Windows 10 中内置的工具来清理垃圾文件、应用程序和游戏等,以优化硬盘空间。使用这些清理工具不仅能够释放空间,而且还有助于提高系统性能。下面小编就为大家汇总介绍 几种种最佳快捷方法,来释放 …

python中astr是啥_python的基本操作

该来的还是来了,早先某个大胖子建议我写关于python基本操作的博客,当时没上心,现在来补点账,也姑且算是对往昔一点回忆吧。对了,那胖子,姓王,所幸不住我隔壁。闲言少叙,python和pych…

canal mysql从库_大厂如何基于binlog解决多机房同步mysql数据(一)?

目录前言单一IDC多IDCmysql主从同步数据同步方案多机房mysql同步方案优化同步方案同步方案的问题如何解决重复插入对于DDL语句处理如何解决唯一索引冲突如何解决数据回环问题总结前言小伙伴们是否经常听说多机房部署,异地容灾?什么两地3中心,…

java语言怎么建立窗口awt,java.awt.Frame类:创建窗口

创建窗口是 AWT 编程的第一步,窗口是所有组件和面板的容器。在 Java AWT 中,我们使用 Frame 类来创建窗口。Frame 中文字意是“框架”,它的主要功能是建立窗口。AWT 建立窗口的步骤如下:设计 Frame 类对象,建立空白窗口…

sql数据导入错误代码: 0x80004005_SQL入门第八关 项目实战

不知不觉,学SQL已经一个多月了,每天下班学一个小时,有空做做练习题。从之前的焦虑到现在已经有了一定的自信了,猴子的课程真的很适合小白入门,尤其是SQL学习群里,助教老师很尽责,每个问题都会解…

虚拟主机选择php版本,虚拟主机的php版本如何选择

虚拟主机如何选择php版本?虚拟主机选择PHP版本,这是根据网站程序设置的。例如,新版本的WordPress需要PHP5.6和更高版本,而旧版本,如WordPress4,可以使用PHP5.2、5.3和其他更低版本。虚拟主机的PHP版本是什么…

有十五个数按由大到小顺序存放在一个数组中_数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)...

作者:张人大代码效率优化复杂度 -- 一个关于输入数据量n的函数时间复杂度 -- 昂贵与代码的结构设计有着紧密关系一个顺序结构的代码,时间复杂度是O(1), 即任务与算例个数 n 无关空间复杂度 -- 廉价与数据结构设计有关数据结构 -- 考虑如何去组织计算机中…

图片马赛克去除工具_图片太多该如何进行排版呢?

胖友们大家好呀,我是三儿昨天三儿刚讲了多文字如何排版就有胖友在后台留言说问三儿如何对图片较多的内容排版那么今天三儿就来教大家图片较多时我们该怎样排版!赶紧拿着小本本做好笔记哦!图片的重要性图片在排版设计中,占有很大的…

神经网络人口预测matlab,BP神经网络预测(人口)程序(matlab)

自己测试人口预测的matlab实现:x[5416755196563005748258796602666146562828646536599467207662076585967295691727049972538745427636878534806718299285229871778921190859924209371794974962599754298705100072101654103008104357105851107507109300111026112704…

php如何监听页面滚动,html5中在元素滚动条在滚动时触发的事件onscroll

实例元素滚动时执行 JavaScript定义和用法onscroll 事件在元素滚动条在滚动时触发。提示: 使用 CSS overflow 样式属性来创建元素的滚动条。浏览器支持语法HTML 中:JavaScript 中:object.οnscrοllfunction(){myScript};JavaScript 中, 使用 addEventListener() 方…

可观测性PHP秩判据,线性系统的可控性与可观测性

现代控制理论中用状态方程和输出方程描述系统,输入和输出构成系统的外部变量,而状态为系统的内部变量,这就存在着系统内的所有状态是否可受输入影响和是否可由输出反映的问题,这就是可控性和可观测性问题。如果系统所有状态变量的…

matlab中的nlinfit,matlab中nlinfit问题!!!!!!!!!!!!

matlab中nlinfit问题!!!!!!!!!!!!mip版 关注:272 答案:3 悬赏:40解决时间 2021-01-19 04:20已解决2021-01-18 13:28muinline(beta(…

电机控制系统php,电机控制系统的未来发展变化趋势

在智能化生产系统的发展过程之中,网络化分布式生产设备的实现意味着我国机器设备之间可以达到信息沟通的能力,而在这种沟通之中良好的控制系统则承担了枢纽的职责。在这种地机控制系统的发展之中迎合了我国智能联网时代的发展需求,将人机交互…

微信wechat.class.php,laravel使用组件实现微信网页授权登入

laravel框架中的实现简单实现微信网页授权登入首先引入基于laravel的easywechat的组件,laravel版本5.8$ cd laravel$ composer require "overtrue/laravel-wechat:~5.0"然后呢因为下载过程会比较缓慢所以可以先根据官方提供的方式配置一下该组件的中间件根据官方提供…

qc成果报告范例_质量引领创新 扬子江勇夺医药行业QC“十五连冠”

近日,第40届全国医药行业QC小组成果发布交流会圆满落幕,扬子江药业集团勇夺QC一等奖总数“十五连冠”。会上,业界人士共享新成果、带来新思考、集聚新视野。扬子江人凭借高标准、高要求的精益求精的创新精神,在产品质量、技术、人…

oracle 11g安装时设密码 database control,安装oracle 11g 保护Database Control时出错,Database Control已在非安全模式下启动...

错误解决:打开cmdC:\Users\lin>emctl status dbconsoleEnvironment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.C:\Users\lin>C:\Users\lin>set oracle_sidorclC:\Users\lin>emca -config dbcontrol dbE…

oracle fs1 2多少u,甲骨文FS1系列闪存的“大道至简”

近年来,存储技术中,闪存技术顶着“最高效挖掘数据能力”和“最小容量需求”的称号试图颠覆传统存储的技术架构和竞争格局。据IDC预测,全闪存存储阵列市场规模在2015年将增至12亿美元,而到2016年这一市场将增至16亿美元&#xff0c…

django oracle 性能,4.利用Django在前端展示Oracle 状态趋势

利用Django在前端展示Oracle 状态趋势2017-12-15 Python 宅必备开发环境操作系统:CentOS 7.4Python版本 :3.6Django版本: 1.10.5操作系统用户:oms数据处理:pandas前端展示:highcharts通过上面我们已介绍了如何定时获取系统Oracle状态语句以及如何利用pandas处理成highcharts识别…

linux 格式化 目录,Linux 磁盘分区、格式化、目录挂载

实验环境: Citrix虚拟化, RHEL6.4系统环境本文目的: 熟悉Linux的基本磁盘分区、格式化、目录挂载。1.显示当前主机目录2.磁盘分区3.磁盘格式化4.挂载目录1. 显示当前主机目录命令df -h[rootlocalhost ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/map…

linux用分词系统,Linux(CentOS 6.4)Solr4.8.1中文分词配置(IK分词)

1、环境准备CentOS6.4、Tomcat6.0、Jdk1.7、Solr4.8.1、IK Analyzer 2012FF_hf12、配置步骤(1)下载IK Analyzer分词包,解压缩(2)将IKAnalyzer2012FF_u1.jar拷贝到solr服务的目录solr/WEB-INF/lib下cp /usr/download/IK Analyzer 2012FF_hf1/IKAnalyzer2012FF_u1.jar…