开场白
如果你写的代码里面有一个很耗时的操作,比如这个10000*10000的操作,那么在执行的时候,很可能让你陷入未知的等待……
这时候,白银选手会直接加入一个print,但直接输出会让你的控制台直接爆炸。
黄金选手会加入\r,让输出保持在同一行。
当然,这样是静态的,继续加个刷新和延时,这样他就变成动态的了。
钻石选手甚至可以给你手搓一个进度条出来。(这里简化了一下算法,简化为遍历1-1000)
import time
total = 1000
interval = 20 # 每次更新的间隔数
for i in range(1, total + 1):
time.sleep(0.01) # 线程推迟指定时间运行,0.01秒代表休眠10毫秒
percentage = (i / total) * 100
num = int(percentage // 2)
if i == total:
process = "\r[%3.0f%%]: |%-50s|\n" % (percentage, '#' * num)
else:
process = "\r[%3.0f%%]: |%-50s|" % (percentage, '#' * num)
print(process, end='', flush=True)
但真正的王者,会使用现成的库!
正戏
progress
progress是一个简单的第三方进度条模块,只需要在代码中创建一个Bar对象,设置好长度,并在循环中更新他,就可以轻松得到一个进度条。(不知道为什么pycharm不显示进度条,下面的例子用的Thonny)
from progress.bar import Bar
import time
start = 1
end