Python学习笔记(四)——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, "-"))
进度条拓展
-  在任何运行时间较长的程序中增加进度条 
-  在任何希望提高用户体验的应用中增加进度条 
-  进度条是人机交互的纽带之一 
文本进度条的不同设计函数:

开始展示慢些,后续增长快些更能增加用户体验
练习题
2018北理工python语言程序设计课后编程及测试解答










