time库的使用(Python)文本进度条

本文介绍了Python的time库,包括时间获取、格式化和程序计时功能。重点讲解了如何利用time库创建动态文本进度条,通过实例展示了如何在一行中更新进度条并实现单行刷新。进度条的实现结合了perf_counter()计时和控制台的回退字符` `,适用于监控和展示程序执行进度。

1、time库是Python中处理时间的标准库

-计算机时间的表达

-提供获取系统时间并格式化输出功能

-提供系统级精确计时功能,用于程序性能分析

import time
time.<b>()

  2、time库包括三类函数

 时间获取:time()    ctime()   gmtime()  

时间格式化:strftime()    strptime()

程序计时:sleep(),perf_counter() 

函数描述
time()

获取当前时间戳,即计算机内部时间值,浮点数

>>>time.time()

1550067334.9398868

ctime()

获取当前时间并以易读方式表示,返回字符串

>>>time.ctime()

'Wed Feb 13 22:16:32 2019'

gmtime()

获取当前时间,表示为计算机可处理的时间格式

>>>time.gmtime()

time.struct_time(tm_year=2019, tm_mon=2, tm_mday=13, tm_hour=14, tm_min=17, tm_sec=13, tm_wday=2, tm_yday=44, tm_isdst=0)

3、时间格式化

将时间以合理的方式展示出来

-格式化:类似字符串格式化,需要有展示模板

-展示模板由特定的格式化控制符组成

-strftime()方法

函数描述
strftime(tpl,ts)

tpl是格式化模板字符串,用来定义输出效果

ts是计算机内部时间类型变量

>>>t = time.gmtime()

>>>time.strftime("%Y-%m-%d %H:%M:%S",t)

'2019-02-13 14:18:09'

strptime(str,tpl)

str是字符串形式的时间值

tpl是格式化模板字符串,用来定义输入效果

>>> timeStr='2019-02-13 22:21:45'
>>> time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2019, tm_mon=2, tm_mday=13, tm_hour=22, tm_min=21, tm_sec=45, tm_wday=2, tm_yday=44, tm_isdst=-1)

格式化字符串日期/时间说明值范围和实例
%Y年份0000~9999,例如:1900
%m月份01~12,例如:10
%B月份名称January~December,例如:April
%b月份名称缩写Jan~Dec,例如:Apr
%d日期01~31,例如:25
%A星期Monday~Sunday,例如Wednesday
%a星期缩写Mon~Sun,例如:Wed
%H小时(24h制)00~23,例如:12
%h小时(12h制)01~12,例如:7
%p上/下午AM,PM,例如:PM
%M分钟00~59,例如:26
%S00~59,例如:26

 4、程序计时

程序计时应用广泛

-程序计时指测量起止动作所经历时间的过程

-测量时间:perf_counter()

-产生时间:sleep()

函数描述
perf_counter()

返回一个CPU级别的精确时间计数值,单位为秒

由于这个计数值起点不确定,连续调用差值才有意义

>>> start = time.perf_counter()
>>> start
69.377556
>>> end =time.perf_counter()
>>> end
140.5912835
>>> end - start
71.2137275

sleep(s)

s拟休眠的时间,单位是秒,可以是浮点数

>>> def wait():
    time.sleep(3.3)
>>> wait()      #程序将等待3.3秒后再退出

5、实例:文本进度条

(1)-采用字符串方式打印可以动态变化的文本进度条

         -进度条需要能在一行中逐渐变化

#TextProBarV1.py
import time
scale = 10
print("----执行开始-----")
for i in range(scale+1):
    a = '*' * i
    b ='.'*(scale - i)
    c =(i/scale)*100
    print("{:^3.0f}%[{}->{}]".format(c,a,b))
    time.sleep(0.1)
    print("----执行结束-----")

运行结果:

----执行开始-----
 0 %[->..........]
----执行结束-----
10 %[*->.........]
----执行结束-----
20 %[**->........]
----执行结束-----
30 %[***->.......]
----执行结束-----
40 %[****->......]
----执行结束-----
50 %[*****->.....]
----执行结束-----
60 %[******->....]
----执行结束-----
70 %[*******->...]
----执行结束-----
80 %[********->..]
----执行结束-----
90 %[*********->.]
----执行结束-----
100%[**********->]
----执行结束-----

(2)单行动态刷新     刷新的关键是\r

-刷新的本质是:用后打印的字符覆盖之前的字符

-不能换行:print()需要被控制

-要能回退:打印后光标退回到之前的位置   \r

import time
for i in range(101):
    print("\r{:3}%".format(i),end="")
    time.sleep(0.1)

运行结果:

  0%   1%   2%   3%   4%   5%   6%   7%   8%   9%  10%  11%  12%  13%  14%  15%  16%  17%  18%  19%  20%  21%  22%  23%  24%  25%  26%  27%  28%  29%  30%  31%  32%  33%  34%  35%  36%  37%  38%  39%  40%  41%  42%  43%  44%  45%  46%  47%  48%  49%  50%  51%  52%  53%  54%  55%  56%  57%  58%  59%  60%  61%  62%  63%  64%  65%  66%  67%  68%  69%  70%  71%  72%  73%  74%  75%  76%  77%  78%  79%  80%  81%  82%  83%  84%  85%  86%  87%  88%  89%  90%  91%  92%  93%  94%  95%  96%  97%  98%  99% 100%

(3)完整效果

#TextProBarV1.py
import time
scale =50
print("执行开始".center(scale//2,"-"))
start = time.perf_counter()
for i in range(scale+1):
    a = '*' * i
    b = '.' * (scale - i)
    c = (i/scale)*100
    dur = time.perf_counter() - start
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end="")
    time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))

 

运行:(win+R    cd进入某一文件夹   磁盘名:直接切换磁盘)

分析:

-文本进度条程序使用了perf_counter()计时

-计时方法适合各类需要统计时间的计算问题

-例如:比较不同算法时间、统计部分程序运行时间

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值