Python学习笔记(四)——time库的使用
文章目录
- Python学习笔记(四)——time库的使用
- time库的使用
- time库的三类函数
- 时间获取
- 时间格式化
- 格式化字符串
- 程序计时
- 文本进度条实例
- 文本进度条
- 单行动态刷新
- 进度条拓展
- 练习题
time库的使用
time库是Python中处理时间的标准库
- 计算机时间的表达
- 提供获取系统时间并格式化输出功能
- 提供系统级精确计时功能,用于程序性能分析
import time
time.<b>()
time库的三类函数
- 时间获取:time() ctime() gmtime()
- 时间格式化:strftime() strptime()
- 程序计时:sleep() perf_counter()
时间获取
时间获取函数 | 描述 |
time() | 获取当前时间戳(1970年到现在以秒为单位的数值),即计算机内部时间值,浮点数。 |
ctime() | 获取当前时间并以易读的方式表示,返回字符串 |
gmtime() | 获取当前时间,表示为计算机可处理的时间格式 |
时间格式化
时间格式化将时间以合理的方式展示出来。
- 格式化:类似字符串格式化,需要有展示模板
- 展示模板有特定的格式化控制符组成
时间格式化函数 | 描述 |
strftime(tpl,ts) | 将计算机时间转化字符串可读时间。tpl是格式化模板字符串,用来定义输出效果;ts是计算机内部时间类型变量。import time;t = time.gmtime();time.strftime(“%Y-%m-%d %H:%M:%S” , t) |
strptime(str,tpl) | 将字符串时间转化为计算机可读时间,与striptime互逆。str是字符串形式的时间值;tpl是格式化模板字符串,用来定义输入效果。 |
格式化字符串
格式化字符串 | 日期/时间说明 | 值范围和实例 |
%Y | 年份 | 0000~9999,如1900 |
%m | 月份 | 01~12,如10 |
%B | 月份名称 | January~December,如April |
%b | 月份名称缩写 | January~Dec,如Apr |
%d | 日期 | 01~31,如25 |
%A | 星期 | Monday~Sunday,如Wednesday |
%a | 星期缩写 | Mon~Sun,如Wed |
%H | 小时(24h制) | 00~23,如12 |
%I | 小时(12h制) | 01~12,如7 |
%p | 上/下午 | AM,PM,如PM |
%M | 分钟 | 00~59,如26 |
%S | 秒 | 00~59,如26 |
程序计时
程序计时指测量起始动作所经历时间的过程,应用广泛。
包括测量时间函数perf_counter(),产生时间函数sleep()
程序计时函数 | 描述 |
perf_counter() | 返回一个CPU级别的精确时间计数值,单位为秒。由于这个计数值起点不确定,连续调用差值才有意义 |
sleep(s) | s拟休眠时间,单位是秒,可以使浮点数。如import time;def wait():time.sleep(3.3);wait()#程序将等待3.3秒后再退出 |
文本进度条实例
文本进度条
- 采用字符串方式打印可以动态变化的文本进度条
- 进度条需要能在一行中逐渐变化
如何获得文本进度条的变化时间?
- 采用sleep()模拟一个持续的进度
- 似乎没那么难
#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("------执行结束------")
单行动态刷新
刷新的本质:用后打印的字符覆盖之前的字符
不能换行:print()需要被控制,使用end=“ ”
要能回退:打印后光标退回到之前的位置,使用\r——刷新的关键
#TextProBarV2.py
import time
for i in range(101):
print("\r{:3}%".format(i),end="")
time.sleep(0.1)
#IDLE是开发环境,不是程序运行环境,\r被屏蔽
#TextProBarV3.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}%[{}->{}]".format(c,a,b,dur),end='')
time.sleep(0.1)
print("\n"+"执行结束".center(scale//2, "-"))
进度条拓展
- 在任何运行时间较长的程序中增加进度条
- 在任何希望提高用户体验的应用中增加进度条
- 进度条是人机交互的纽带之一
文本进度条的不同设计函数:
开始展示慢些,后续增长快些更能增加用户体验