【项目Python时间选取,time()、perf_counter()和process_time()的区别】


Python时间测试:time()、perf_counter()和process_time()的区别


一、time()(float)

	 1. time.time()方法
		返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
		
	 2. now = time.localtime()
		time.strftime("%Y-%m-%d %H:%M:%S",now)
		'2022-06-14 15:57:26'
格式说明
%a显示简化星期名称
%A显示完整星期名称
%b显示简化月份名称
%B显示完整月份名称
%c本地相应的日期和时间表示
%d显示当月第几天
%H按24小时制显示小时
%I按12小时制显示小时
%j显示当年第几天
%m显示月份
%M显示分钟数)
%p本地am或者pm的相应符
%S显示秒数)
%U一年中的星期数
%w显示在星期中的第几天,默认从0开始表示周一
%W和%U基本相同
%x本地相应日期
%X本地相应时间
%y去掉世纪的年份(00 - 99)
%Y完整的年份
%Z时区的名字(如果不存在为空字符)
%%‘%’字符
计算数据的话可以start = time.time()
xxxxxxx
xxxxxxx
end = time.time()
result = end -start

二、perf_counter()(float)

import time

scale = 50 

print("执行开始".center(scale//2,"-"))  # .center() 控制输出的样式,宽度为 25//2,即 22,汉字居中,两侧填充 -

start = time.perf_counter() # 调用一次 perf_counter(),从计算机系统里随机选一个时间点A,计算其距离当前时间点B1有多少秒。当第二次调用该函数时,默认从第一次调用的时间点A算起,距离当前时间点B2有多少秒。两个函数取差,即实现从时间点B1到B2的计时功能。
for i in range(scale+1):   
    a = '*' * i             # i 个长度的 * 符号
    b = '.' * (scale-i)  # scale-i) 个长度的 . 符号。符号 *. 总长度为50 
    c = (i/scale)*100  # 显示当前进度,百分之多少
    dur = time.perf_counter() - start    # 计时,计算进度条走到某一百分比的用时
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')  # \r用来在每次输出完成后,将光标移至行首,这样保证进度条始终在同一行输出,即在一行不断刷新的效果;{:^3.0f},输出格式为居中,占3位,小数点后0位,浮点型数,对应输出的数为c;{},对应输出的数为a;{},对应输出的数为b;{:.2f},输出有两位小数的浮点数,对应输出的数为dur;end='',用来保证不换行,不加这句默认换行。
    time.sleep(0.1)     # 在输出下一个百分之几的进度前,停止0.1print("\n"+"执行结果".center(scale//2,'-'))
+ 通常perf_counter()用在测试代码时间上,具有最高的可用分辨率。
+ 返回性能计数器的值---s(秒),即具有最高可用分辨率的时钟,以测量短持续时间。 
+ **它确实包括睡眠期间经过的时间,并且是系统范围的。**

三、process_time()的区别(float)

返回当前进程的系统和用户CPU时间总和的值---s(秒)
通常time.process_time()也用在测试代码时间上,根据定义,它在整个过程中。
**注意 process_time()不包括sleep()休眠时间 期间经过的时间。**

四、纳秒(int)

time.perf_counter_ns()
time.process_time_ns()
time.time_ns()

总结

三者比较

除了time模块,Python还提供了 timeit 模块。具体的用法:更多用法可以查看 timeit官方文档

import timeit
t = timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
print(t)
timeit模块提供了一种简单的方法来计算一小段Python代码,比如一些循环或者正则匹配。 timeit既有命令行界面,也有可调用界面。 避免了许多用于测量执行时间的常见陷阱。可以用于基准测试/分析目的的代码块。

1,time()精度上相对没有那么高,而且受系统的影响,适合表示日期时间或者大程序程序的计时。

2,perf_counter()适合小一点的程序测试,会计算sleep()时间

3,process_counter()适合小一点的程序测试,不会计算sleep()时间。

time_path

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值