Python · 进度条
(这里是本章会用到的 GitHub 地址)
我实现的这个进度条可能是可以当做一个第三方库来使用的(这个人好自大,啧),它支持记录并发程序的进度且损耗基本只来源于 Python 本身
先来看看我们的进度条长啥样:
它有一个名字(“Test”)、有总任务数和已完成任务数、有总耗时和单个任务平均耗时、还有一个“进度条”。所有这些在整个程序运行过程中都是在一行内输出的、也就是说它不会产生多行输出(如果屏幕够宽的话)。所有任务完成后,进度条会变为:
大体上来说功能还算完备。虽说看上去可能有点厉害,其实最核心的实现只用到了这个功能:
- print("\r" + "xxx", end=""):这样的话会先把 console 里面当前的行清除掉、再输出 xxx
剩下的就都是各种封装了。我打算只说一个实现的大致思路、然后讲讲怎么去调用这个进度条
实现的大纲大概如下:
- 要记录任务开始时的已完成的任务数和未完成的任务数
- 要定义一个计数器,记录着总共已完成的任务数
- 要定义一个 start 函数和一个 update 函数作为接口
- 要定义一个 _flush 函数来控制输出流
调用的方法:
def task():
x = 0
for _ in range(10 ** 6):
x = 0
return x
if __name__ == '__main__':
n = 100
bar = ProgressBar(max_value=n, name="Test")
bar.start()
for i in range(n):
task()
bar.update()
Done!运行效果就是上面那两张图
这章有点水(你居然有自知之明)、主要是想帮一下平时会用 Python 运行大程序却又暂时苦于无法得知进度的观众老爷们(虽然这部分观众老爷可能都知道怎么实现进度条……)。进度条通常来说可以用在爬虫或机器学习中,我实现的神经网络里面就用到了它
Python · 进度条的更多相关文章
- tqdm:Python 进度条
Tqdm 是 Python 进度条库,可以在 Python 长循环中添加一个进度提示信息.用户只需要封装任意的迭代器,是一个快速.扩展性强的进度条工具库. 用法:tqdm(iterator) 代码地址 ...
- 2019年的代码都写完了吗?不如做个Python进度条看看还剩多少
我们都知道,进度条是用来直观展示流程所需时间的优秀工具,以免我们担心流程会突然挂掉,而且我们可以用它来预测代码运行是否正常,借助进度条,每个人都能直观地看到脚本最新的进展情况. 如果你之前没用过进度条 ...
- Python进度条模块tqdm实现任务进度可视化
一.前言 tqdm 是一个易用性强.扩展性高的 Python 进度条库,可以在 Python 长循环中添加一个进度提示信息,我们只需要封装任意的迭代器 tqdm(iterator) 即可. 二.安装 ...
- python 进度条的编写
背景: 在执行一些Python脚本时,经常出现执行脚本的过程当中,不知道脚本执行了百分之多少,这个问题一直都让我很苦恼.所以特意总结一下,进度条的编写. #!/usr/bin/env python2. ...
- 【转】Python进度条tqdm的使用
有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况.这对于第三方库非常丰富的Python来说,想要实现这一功 ...
- 让你的程序炫起来!少有人知道但超酷的 Python 进度条开源库
本文适合有 Python 基础的朋友 本文作者:HelloGitHub-Anthony HelloGitHub 推出的<讲解开源项目>系列,本期介绍让你快速拥有完美进度条的 Python ...
- Python 进度条显示
运行工具:Pycharm, import timescale = 50print("开始执行".center(scale//2,"-")) start = ti ...
- Python 进度条原理
#进度条原理 import sys,time for i in range(50): sys.stdout.write("#")#标准输出 #若不能够按照时间一个一个依次显示,则代 ...
- Python - 进度条库 tqdm
前言 在写生成器的时候,网上看到一个进度条库,感觉蛮有意思,记录下 这个库感觉只有在调试的时候会用到,不做深入学习 内置库,不需要安装 示例代码 from tqdm import tqdm for i ...
随机推荐
- python项目运行环境安装小结
安装最新即可,实际的版本号可能不一样 安装过程较复杂,建议用一台单独的vm安装,能做成docker image最好 基础软件 nginx-1.10.0: sudo apt-get install ng ...
- JavaScript的组成 | DOM/BOM
往期回顾 在上一期的<JavaScript的组成 | 核心-ECMAScript >☜里,我们有说到JavaScript 是由三大部分组成,分别是:核心ECMAScript.文档对象模型- ...
- [Java] [Lock] [Synchronized VS ReentrantLock]
Overview java编写多线程程序时,为了保证线程安全,需要对数据进行同步,经常用到的两种同步方式就是synchronized和重入锁ReentrantLock. 相似点 都是加锁方式 都是阻塞 ...
- Travel notes in Vietnam
I‘m back:) For preparing IELTS exam, I haven't written article for over 70 days. It's a good exper ...
- WCF分布式服务1-核心概念
参考msdn library for WCF Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架. 借助 WCF,可以将数据作为异步消息从 ...
- springboot打war包后部署到tomcat后访问返回404错误
springboot打war包后部署到tomcat后访问返回404错误 1.正常情况下,修改打包方式为war <packaging>war</packaging> 2.启动类继 ...
- kettle在本地执行向远程hdfs执行转换错误"Couldn't open file hdfs"
kettle在本地执行向远程hdfs执行转换时,会出现以下错误: ToHDFS.0 - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18 ...
- Java+opencv实现人脸检测
版本 Java1.8 opencv3.4 代码: import java.awt.Graphics; import java.awt.image.BufferedImage; import javax ...
- Eclipse 使用 VS Emulator for android 调试环境配置 步骤
模拟器启动器地址:C:\Program Files (x86)\Microsoft Emulator Manager\1.0\emulatorcmd.exe 获取模拟器ID命令:emulatorcmd ...
- windows添加永久静态路由
添加路由最好在命令行管理员模式下操作 添加临时路由命令,重启后失效 route add 172.16.1.0 mask 255.255.255.0 10.0.10.19 其中,172.16.1.0 是 ...