概述
time库是Python中处理时间的标准库,提供获取系统时间并格式化输出的功能,提供系统级精确计时功能,用于程序性能分析。
time库包括三类函数:
- 时间获取:time() / ctime() / gmtime()
- 时间格式化:strftime() / strptime()
- 程序计时:sleep() / perf_counter()
时间获取
time() : 获取当前时间戳,即计算机内部时间值(浮点数)
import time
print(time.time())
ctime() : 获取当前本地时间并以易读方式显示(字符串)
import time
print(time.ctime()) # Fri Oct 9 11:38:45 2020
gmtime() : 获取当前标准时间,返回值为计算机可处理的时间格式
import time
print(time.gmtime())
时间格式化
将时间以合理的方式展示出来
strftime(tpl,ts)
- tpl 是格式化模板字符串,用来定义输出效果。
- ts 是计算机内部时间类型变量。
import time
t = time.gmtime()
print(time.strftime('%Y-%m-%d %H:%M:%S',t))
strptime(str,tpl)
- str 是字符串形式的时间值
- tpl 是格式化模板字符串,用来定义输入效果:函数返回值是时间结构体
import time
timeStr = '2020-10-09 16:55:55'
print(time.strptime(timeStr,'%Y-%m-%d %H:%M:%S'))
strftime() 与 strptime() 的区别
- strftime() :f 是 format 的意思,把时间处理为我们能看懂的格式,返回值是字符串。
- strptime() :p 是 parse 的意思,对字符串进行解析,返回值是时间结构体。
程序计时
程序计时指测量起止动作所经历时间的过程
perf_counter()
返回一个CPU级别的精确时间计数值,单位为秒。由于这个计数值起点不确定,联系调用差值才有意义。
import time
startTime = time.perf_counter()
endTime = time.perf_counter()
print(endTime - startTime)
sleep(s)
sleep(s) : s指休眠的时间,单位是秒,可以是浮点数。
import time
startTime = time.perf_counter()
time.sleep(3)
endTime = time.perf_counter()
print(endTime - startTime)
实例:文本进度条
需求:采用字符串方式打印可以动态变化的文本进度条,进度条要能在一行中逐渐变化。
先使用循环做一个雏形
import time
progress = 10
print('-----执行开始-----')
for i in range(progress 1):
a = '*' * i
b = '.' * (progress - i)
c = (i/progress) * 100
print('{:^3.0f}%[{}->{}]'.format(c,a,b))
time.sleep(0.1)
print('-----执行结束-----')
增加“文本进度条”单行动态刷新功能
import time
progress = 10
print('-----执行开始-----')
for i in range(progress 1):
a = '*' * i
b = '.' * (progress - i)
c = (i/progress) * 100
print('\r{:^3.0f}%[{}->{}]'.format(c,a,b),end='' )
time.sleep(0.1)
print('-----执行结束-----')
补全功能
import time
progress = 50
print('执行开始'.center(progress//2,'-'))
startTime = time.perf_counter() # 执行开始时间
for i in range(progress 1):
a = '*' * i
b = '.' * (progress - i)
c = (i/progress) * 100
dur = time.perf_counter() - startTime # 当前程序运行时间
print('\r{:^3.0f}%[{}->{}]{:.2f}s'.format(c,a,b,dur),end='' )
time.sleep(0.1)
print('\n' '执行结束'.center(progress//2,'-'))
|