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' |
格式化字符串 | 日期/时间说明 | 值范围和实例 |
%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 |
%S | 秒 | 00~59,例如:26 |
4、程序计时
程序计时应用广泛
-程序计时指测量起止动作所经历时间的过程
-测量时间:perf_counter()
-产生时间:sleep()
函数 | 描述 |
perf_counter() |
返回一个CPU级别的精确时间计数值,单位为秒 由于这个计数值起点不确定,连续调用差值才有意义 >>> start = time.perf_counter() |
sleep(s) |
s拟休眠的时间,单位是秒,可以是浮点数 >>> def wait(): |
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()计时
-计时方法适合各类需要统计时间的计算问题
-例如:比较不同算法时间、统计部分程序运行时间