【Python】给程序加个进度条
对于开发或者运维来说,使用 Python 去完成一些跑批任务,或者做一些监控事件是非常正常的情况。那么如何有效地监控任务的进度?除了在任务中加上 Log 外,还能不能有另一种方式来了解任务进展到哪一步了呢?
这就是今天我们来了解的内容——进度条。
标准输出
首先说一下在操作系统中,都有哪些控制符:
\r: 将光标移动到当前行的首位而不换行;
\n:将光标移动到下一行,并不移动到首位;
\r\n:将光标移动到下一行首位。
那让我们来看下如何通过 Python 来将标准输出中添加进度条吧。
import sys
import time
def progress_bar(total):
"""
进度条效果
"""
# 获取标准输出
_output = sys.stdout
# 通过参数决定你的进度条总量是多少
for count in range(0, total + 1):
# 这里的second只是作为工作量的一种代替
# 这里应该是有你的主程序,main()
_second = 0.1
# 模拟业务的消耗时间
time.sleep(_second)
# 输出进度条
_output.write(f'\rcomplete percent:{count:.0f}')
# 将标准输出一次性刷新
_output.flush()
progress_bar(100)
来看下实际效果:
▌Tqdm 模块
Tqdm 是一个快速、扩展性强的进度条工具库,它提供了非常多的接口,有兴趣的小伙伴可以了解一下。
GitHub 地址是:https://github.com/tqdm/tqdm。
我们来看下,如何使用 Tqdm 模块来实现进度条。
1. 首先是安装,非常简单。
pip install tqdm
2. 接下来就是具体的操作。
from time import sleep
from tqdm import tqdm
# 这里同样的,tqdm就是这个进度条最常用的一个方法
# 里面存一个可迭代对象
for i in tqdm(range(1, 500)):
# 模拟你的任务
sleep(0.01)
是不是看到这里发现,Tqdm 非常的简单呢?这只是一个例子,它也可以非常的复杂,同时也支持多线程、多进程,还有 Pandas。
来一个多进程的感受下吧。
【Python】给程序加个进度条的更多相关文章
- 用 Python 给程序加个进度条,让你的看起来更炫酷?
对于开发或者运维来说,使用 Python 去完成一些跑批任务,或者做一些监控事件是非常正常的情况.那么如何有效地监控任务的进度?除了在任务中加上 Log 外,还能不能有另一种方式来了解任务进展到哪一步 ...
- 《C/C++实现Console下的加载进度条模拟[美观版]》
前言 有时候我们会遇到在CMD或DOS控制台上出现的加载进度条,虽然不是如网页和软件写的美观.但确确实实也有着自己的特色.而且,一个好看的加载进度条也能增加用户使用控制台程序的体验!所以,拿来研究 ...
- css3 linear-gradient实现页面加载进度条效果
最终效果图: html结构: <div> <p class="p1"> <span></span> < ...
- ajax页面加载进度条插件
下面两个都是youtube视频的加载进度条效果的ajax插件 一.官网:http://ricostacruz.com/nprogress/官网 github:https://github.com/rs ...
- pace.js – 加载进度条插件
这儿只是简单介绍一下这个插件pace.js. 在页面中引入Pace.js,页面就会自动监测你的请求(包括Ajax请求),在事件循环滞后,会在页面记录加载的状态以及进度情况.此插件的兼容性很好,可以兼容 ...
- 仿UC浏览器图片加载进度条
前几天用UC浏览器看新闻(无意中给UC打了广告),看到它的图片加载进度条,正好最近有时间,所以就自己写了一个. 效果图如下 进度条的底色和填充颜色都可以调整. 首先中间的笑脸作为一个整体,其实现代码如 ...
- 【Web前沿技术】纯 CSS3 打造的10个精美加载进度条动画
之前向大家介绍8款优秀的 jQuery 加载动画和进度条插件,今天这篇文章向大家推荐10个纯 CSS3 代码实现精美加载进度条动画效果的方案.加载动画和进度条在网站和 Web 应用中的使用非常流行,特 ...
- jQuery模拟页面加载进度条
因为我们无法通过任何方法获取整个页面的大小和当前加载了多少,所以想制作一个加载进度条的唯一办法就是模拟.那要怎么模拟呢? 我们知道,页面是从上往下执行的,也就是说我们可以大致估算出在页面的某个位置加载 ...
- js页面加载进度条
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- e826. 获得和设置JSplitPane分开的位置
The location of a divider is measured in pixels from either the left edge (in the case of a horizont ...
- e799. 限制JSlider的数值在标记以内
By default, the slider can take on any value from the minimum to the maximum. It is possible to conf ...
- tpshop添加后台菜单
目前在后台公用函数文件function.php中getAllMenu方法里添加, 格式如下 array( 'system' => array('name'=>'系统设置','icon'=& ...
- Asp.Net MVC :路由器
特性路由 特性路由是对现有路由系统的扩展,提供了一种针对某个具体Controller类型或Action方法的路由注册方式.从而可以对路由规则进行细粒度的设计. 特性路由(Attribute Route ...
- ubuntu 系统启动异常之无登录界面和版本号启动四个点的地方卡住
zlib 搞的鬼,还没结局,由于rtmpdump 安装需要安装独立zlib库,装完后重启,完了吓一跳,卡住,尼玛这一年的代码都在里面啊!!! ldd /usr/sbin/python 查询库依赖zli ...
- (原)hisi3531立体声pcm实现播放方式
版权声明:本文为博主原创文章,未经博主允许不得转载(http://www.cnblogs.com/lihaiping/p/5251854.html) 最近在使用hisi3531做一个项目,需要实现本地 ...
- log4net 日志配置及使用
一.log4net按照不同的[LEVEL]级别输出到不同文件 <log4net> <!--错误日志:::记录错误日志--> <!--按日期分割日志文件 一天一个--> ...
- Redis系列-php怎么通过redis扩展使用redis
From: http://blog.csdn.net/love__coder/article/details/8691679 通过前面几篇blog,我们应该对redis有个大致的认识,这里再讲解下,p ...
- dropwizard metrics - 基本使用介绍
之前在healthcheck中介绍了怎样通过metrics lib往系统中增加一些简单的健康侦測.如今讲讲dropwizard metrics更重要的部分.记录系统的度量信息. dropwizard提 ...
- LR URL编码和解码方法
问题:URL=http://www.baidu.com/s?wd=%E6%B5%B7%E6%B7%80%E9%BB%84%E5%BA%84"中要对%E6%B5%B7%E6%B7%80%E9% ...