PYTHON学习笔记-4(time库)

5.4模块2:time库的使用

5.4.1time库基本介绍

1)time库是Python中处理时间的标准库:import time   time.<b>()

2)功能: 计算机时间的表达 ;提供获取系统时间并格式化输出功能 ;提供系统级精确计时功能,用于程序性能分析

3)time库包括三类函数

- 时间获取:time()  ctime()  gmtime()

- 时间格式化:strftime()  strptime()

- 程序计时:sleep()  perf_counter()

5.4.2详细函数介绍:

time() 获取当前时间戳,即计算机内部时间值,浮点数

>>>time.time() 1516939876.6022282

ctime() 获取当前时间并以易读方式表示,返回字符串

>>>time.ctime() 'Fri Jan 26 12:11:16 2018'

gmtime() 获取当前时间,表示为计算机可处理的时间格式

>>>time.gmtime()

time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=4, tm_min=11, tm_sec=16, tm_wday=4, tm_yday=26, tm_isdst=0)

时间格式化将时间以合理的形式展示出来,类似字符串格式化,需要有展示模板,展示模板由特定的格式化控制符组成。

strftime(tpl, ts) tpl是格式化模板字符串,用来定义输出效果 ts是计算机内部时间类型变量

>>>t = time.gmtime()

>>>time.strftime("%Y-%m-%d %H:%M:%S",t)

 '2018-01-26 12:55:20'

格式化控制符:

格式化字符串

日期/时间说明

值范围和示例

%Y

年份

0000~9999,例如:1900

%m

月份

01~02,例如: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

%I

小时(12h制)

01~12,例如:7

%P

上/下午

AM,PM,例如:PM

%M

分钟

00~59,例如:26

%S

00~59,例如:26

 

程序计时:测量起止动作历时的过程

测量时间函数:perf_counter()

产生时间函数:sleep()

perf_counter():返回一个CPU级别的精确时间计数值,单位为秒

由于这个计数值起点不确定,连续调用差值才有意义 :

>>>start = time.perf_counter()

318.66599499718114

>>>end = time.perf_counter()

341.3905185375658

>>>end - start

22.724523540384666

sleep(s):s拟休眠的时间,单位是秒,可以是浮点数

>>>def wait():

time.sleep(3.3)

>>>wait()

#程序将等待3.3秒后再退出

Python官方文档中文版:https://docs.python.org/zh-cn/3/

5.5示例4:文本进度条

1)实现:采用字符串方式打印可以动态变化的文本进度条 ;进度条需要能在一行中逐渐变化

2)如何获得文本进度条的变化时间? - 采用sleep()模拟一个持续的进度

3)单行动态刷新:

- 刷新的关键是 \r  

- 刷新的本质是:用之后打印的字符覆盖之前的字符

- 不能换行:print()需要被控制

- 要能回退:打印后光标退回到之前的位置 \r

4)代码:

#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}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')

    time.sleep(0.1)

print("\n"+"执行结束".center(scale//2,"-"))

代码解析:

print("执行开始".center(scale//2,"-")):

center() 方法返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格,语法str.center(width[, fillchar])。

.center() 控制输出的样式,宽度为 50//2,即 25,汉字居中,两侧填充 -

start = time.perf_counter():

调用一次perf_counter(),从计算机系统里随机选一个时间点A,计算其距离当前时间点B1有多少秒。当第二次调用该函数时,默认从第一次调用的时间点A算起,距离当前时间点B2有多少秒。两个函数取差,即实现从时间点B1到B2的计时功能。

print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end=''):

\r用来在每次输出完成后,将光标移至行首,这样保证进度条始终在同一行输出,即在一行不断刷新的效果;{:^3.0f},输出格式为居中,占3位,小数点后0位,浮点型数,对应输出的数为c;{},对应输出的数为a;{},对应输出的数为b;{:.2f},输出有两位小数的浮点数,对应输出的数为dur;end='',用来保证不换行,不加这句默认换行。

结果:

 

得不到老师的结果:

 

原因:?

进度条的单行回退要在命令行(也叫控制台、Windows的cmd)下才能使用,IDLE屏蔽了'\r'的功能。

 

文本进度条程序使用了 perf_counter() 计时,计时方法适合各类需要统间的算问题,例如:比较不同算法时间 、统计程序运行时。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值