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, "-"))

进度条拓展

  • 在任何运行时间较长的程序中增加进度条
  • 在任何希望提高用户体验的应用中增加进度条
  • 进度条是人机交互的纽带之一

文本进度条的不同设计函数:

py timestamp 单位 python中strptime_字符串

开始展示慢些,后续增长快些更能增加用户体验