Python-time.time() 和 time.perf_counter()

基本概念

1.time.time()→ float

返回自纪元以来的秒数作为浮点数,但是时期的具体日期和闰秒的处理取决于使用的平台。比如:在Windows和大多数Unix系统上,纪元是1970年1月1日00:00:00(UTC),并且闰秒不计入自纪元以来的秒数,这也通常被称为Unix时间。我们要可以通过gmtime(0)查看自己平台上的纪元。

注意,即使时间总是作为浮点数返回,但并非所有系统都提供的精度高于1秒,而且更改系统的时间会影响time()的值。虽然此函数通常返回非递减值,但如果在两次调用之间设置了系统时钟,则它可以返回比先前调用更低的值。

通常用time()来做时间的格式输出,也会用在一些测试代码时间上面。在我们测试代码的时候需要调用两次,做差值,注意它会把sleep()的时间也算进去 

2.time.perf_counter()→ float

返回性能计数器的值(以秒为单位),即具有最高可用分辨率的时钟以测量短持续时间。它确实包括 sleep 期间耗时并且是系统范围的。返回值的引用点是未定义的,因此只有连续调用的结果之间的差异才有效。

3.time.process_time()→ float

返回当前进程的系统和用户 CPU 时间之和的值(以秒为单位)。它不包括 sleep 期间耗时 .根据定义,它是进程范围的。返回值的引用点是未定义的,因此只有连续调用的结果之间的差异才有效。

三者比较

1. time()精度上相对没有那么高,而且受系统的影响,适合表示日期时间或者大程序程序的计时,处理绝对时间,即“真实世界时间”(我们习惯的时间类型)。

2. perf_counter()适合小一点的程序测试,会计算sleep()时间。
处理相对时间,它与现实世界的时间没有明确的关系(即,这种关系对我们来说是未知的,并且取决于几个因素)。它是使用 CPU 计数器测量的,主要用于比较性能。

3. process_counter()适合小一点的程序测试,不会计算sleep()时间。
处理相对时间,主要用于比较性能。

此外Python3.7开始还提供了以上三个方法精确到纳秒的计时。分别是:

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

注意这三个精确到纳秒的方法返回的是整数类型。

实现代码

import time

a1 = time.perf_counter()
a2 = time.process_time()
a3 = time.time()
c = 1
for i in range(1, 20000):
    c *= i
time.sleep(1)
b1 = time.perf_counter()
b2 = time.process_time()
b3 = time.time()
print('time.perf_counter():', b1 - a1, 's')
print('time.process_time():', b2 - a2, 's')
print('time.time():', b3 - a3, 's')

>>>

time.perf_counter(): 1.0922675 s
time.process_time(): 0.0625 s
time.time(): 1.0924153327941895 s

参考:

Python语言基础(7.2)time模块 - 知乎
https://zhuanlan.zhihu.com/p/427830258

python-3.x - time.perf_counter() 和 time.process_time() 有什么区别? - IT工具网
https://www.coder.work/article/7741535

【Python】 time模块中time和perf_counter的区别_Encarta1993的博客-CSDN博客
https://blog.csdn.net/u014147522/article/details/130927851

Python3.7中time模块的time()、perf_counter()和process_time()的区别_time.process_time_Jock2018的博客-CSDN博客
https://blog.csdn.net/qq_27283619/article/details/89280974

python time.time()和time.perf_counter()在基于window、ubuntu和web的解释器中是不同的结果。是来自viirus的吗?-腾讯云开发者社区-腾讯云
https://cloud.tencent.com/developer/ask/sof/1506106

time.time() 或 time.perf_counter() — 哪个更快? | 那些遇到过的问题
https://qa.1r1g.com/sf/ask/4622579111/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在中,time.perf_counter()和time.time()是两个用于测量时间的方法,它们之间存在一些区别。 time.perf_counter()返回性能计数器的值,以小数秒为单位,具有最高可用分辨率的时钟,用于测量短持续时间。它包括了睡眠期间经过的时间,并且是系统范围的。通常在测试代码时间上使用perf_counter(),因为它具有最高的可用分辨率。需要注意的是,perf_counter()的参考点未定义,因此在测试代码时间时需要调用两次,并且计算两次调用之间的差值,以获得准确的时间间隔。 而time.time()返回自纪元以来的秒数作为浮点数,具体日期和闰秒的处理取决于使用的平台。它通常用于时间的格式化输出,可以将返回的数字转换为更常见的时间格式,如年、月、日、小时等。需要注意的是,不是所有系统都提供比1秒更高的精度,并且更改系统时间会影响time()的值。此外,time()的返回值是递增的,但如果在两次调用之间设置了系统时钟,则可能会返回比先前调用更低的值。 综上所述,time.perf_counter()适用于测量短持续时间,具有最高的分辨率,而time.time()用于获取当前时间和时间格式化输出。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python3.7中time模块的time()、perf_counter()和process_time()的区别](https://blog.csdn.net/qq_27283619/article/details/89280974)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值