你好,我是天作。
最近,我真的好丧。一些有截止日期的事情,都是拖到Deadline的前一天才草草了事;对于那些没有截至日期的事情,更是仅仅存在脑子里,徒增了焦虑,却迟迟没有动手。
不幸中的万幸,我渐渐地培养了读书的习惯。
为了克服自己拖延的症状,我读了一些习惯养成的书籍,而这些书基本上都提到了这样一个思路。
这个思路就是:“拆”。
把大的事情“拆”成一件件小的事情,把困难的事情“拆”成一件件容易的事情。
比如,我想去跑步。那我就可以把跑步“拆”分成以下几个步骤:
1)换上准备运动的装备(运动裤、运动鞋)
2)走到运动的地方(告诉自己就是出去散散步)
3)先跑5分钟(告诉自己就跑5分钟)
4)慢慢的继续下去
在没有“拆”之前,事情只有两个状态“完成”和“未完成”,这样只有在进度完成100%的时候才可以看到结果;
事情被“拆”分之后,就转化为一件件可以做到的具体事情;
我们每完成一小部分,就会有一种掌控全局的感觉,也更容易促进整个进度条的完成。
运行的程序也是如此,没有可视化进度,我们只能苦苦等待最终的完成,这样确实容易人焦躁不安。
有了进度条,我们就可以时时掌握程序运行的进度,可以让人心里踏实。
那么,怎么用 Python 给程序加个进度条呢?
可以采用以下五种方式:
1、使用time模块,结合python的基础语法(循环、条件判断、字符串格式化)设计进度条
import time
for i in range(0, 101, 2):
time.sleep(0.1)
num = i // 2
if i == 100:
# 字符串格式化
# %3s——右对齐,占位符3位 %有特殊含义:想要打印%,使用%%表示
# %-50s——左对齐,占位符50位
# \r 回车 \n 换行
process = "\r[%3s%%]: |%-50s|\n" % (i, '|' * num)
else:
process = "\r[%3s%%]: |%-50s|" % (i, '|' * num)
print(process, end='', flush=True)
运行效果:
2、使用time模块和sys模块
sys.stdout.flush():立即刷新输出的内容
sys.stdout.write():打印不换行
print()方法:打印换行
import sys, time
print("正在下载......")
for i in range(11):
if i != 10:
sys.stdout.write("==")
else:
sys.stdout.write("== " + str(i * 10) + "%/100%")
sys.stdout.flush()
time.sleep(0.2)
print("\n" + "下载完成")
运行效果:
3、tqdm扩展库
tqdm第三方模块(可使用pip进行安装)可以实时输出处理进度,占用的CPU资源非常少;
支持windows、Linux、mac等系统,支持循环处理、多进程、递归处理;
还可以结合linux的命令来查看处理情况,等进度展示。
from time import sleep
from tqdm import tqdm
for i in tqdm(range(20)):
sleep(0.5)
运行效果:
4、Progressbar 扩展库
Python Progressbar模块(pip安装)提供基于文本的可视化进度条,通常用在显示下载进度、显示任务的执行进度等等。
import time
from progressbar import *
progress = ProgressBar()
for i in progress(range(1000)):
time.sleep(0.01)
运行效果:
5、alive-progress 扩展库
alive-progress扩展库(pip安装)是一种具有动态效果的智能进度条
from alive_progress import alive_bar
import time
items = range(10) # retrieve your set of items
with alive_bar(len(items)) as bar: # declare your expected total
for item in items: # iterate as usual
# process each item
bar() # call after consuming one item
time.sleep(1)
运行效果:
总结
程序中的进度条可以让程序更炫酷,可以显示下载进度、显示任务的执行进度;
生活中的进度条可以让我们对整个目标的重要步骤有清晰地界定,减少对未知的恐惧。一切都会好起来的吧。
后台回复 进度条 获取源码,如果觉得文章不错,点点右下角的 “在看” 呗!
-END-
猜你喜欢
1、Python两行代码剪藏网页为 PDF
2、Python快速卡通化人物头像
3、有一分热,发一分光
@天作之程
你好起来,身边的一切都会好起来
你 “在看” 我吗?