Python time clock()方法

本文介绍了Python中用于时间测量的三个函数:time.time(), time.perf_counter(), 和 time.process_time()。通过示例展示了它们在计算列表创建、列表推导式和生成器耗时及内存开销的应用。time.time()返回自纪元以来的秒数,perf_counter()提供高精度的时钟,process_time()则计算CPU时间。性能测试时,要注意它们的使用场景和区别,例如perf_counter()和process_time()不包括sleep()的时间,而time.time()则包括。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python time


描述

Python 3.8 已移除 clock() 方法 可以使用 time.perf_counter() 或 time.process_time() 方法替代。

time.process_time() → float

(以小数表示的秒为单位)返回当前进程的系统和用户 CPU 时间的总计值。 它不包括睡眠状态所消耗的时间。 根据定义它只作用于进程范围。 返回值的参考点未被定义,因此只有两次调用之间的差值才是有效的。

import time   #计算运行时间
import sys   #计算内存开销

#1.使用列表
t0=time.process_time()#获取CPU开始的时间
list1=[]
for i in range(10000000):
    if i % 2 == 0:
      list1.append(i)
costTime=time.process_time()-t0#计算从开始到结束的时长
print('创建列表耗时:',costTime)
print('创建列表内存开销:',sys.getsizeof(list1))


#2.使用列表推导式---更加便捷的生成列表,但依然运算耗时 占内存
t1=time.process_time()
list2=[x for x in range(10000000) if x%2==0]
costTime2=time.process_time()-t1
print('列表推导式耗时:',costTime2)
print('列表推导式内存开销:',sys.getsizeof(list2))


#3.生成器
#把列表推到式外层的[]换成()
t2=time.process_time()
list3=(x for x in range(1000000000000) if x%2==0)
costTime3=time.process_time()-t2#计算从开始到结束的时长
print('创建生成器耗时:',costTime3)
print('创建生成器内存开销:',sys.getsizeof(list3))


1. time.time()方法

返回自纪元以来的秒数作为浮点数,但是时期的具体日期和闰秒的处理取决于使用的平台。比如:在Windows和大多数Unix系统上,纪元是1970年1月1日00:00:00(UTC),并且闰秒不计入自纪元以来的秒数,这也通常被称为Unix时间。我们要可以通过gmtime(0)查看自己平台上的纪元。
注意,即使时间总是作为浮点数返回,但并非所有系统都提供的精度高于1秒,而且更改系统的时间会影响time()的值。虽然此函数通常返回非递减值,但如果在两次调用之间设置了系统时钟,则它可以返回比先前调用更低的值。
time()返回的数字可以转换为更常见的时间格式(即年,月,日,小时等),方法是将其传递给gmtime()函数或在本地时间传递给本地时间( )功能。在这两种情况下都返回struct_time对象,可以从该对象作为属性访问日历日期的组件。
所以我们通常用time()来做时间的格式输出,也会用在一些测试代码时间上面。在我们测试代码的时候需要调用两次,做差值,注意它会把sleep()的时间也算进去。(具体场景有知道的小伙伴欢迎留言分享)
2. time.perf_counter()方法

返回性能计数器的值(以小数秒为单位)作为浮点数,即具有最高可用分辨率的时钟,以测量短持续时间。 它确实包括睡眠期间经过的时间,并且是系统范围的。
通常perf_counter()用在测试代码时间上,具有最高的可用分辨率。不过因为返回值的参考点未定义,因此我们测试代码的时候需要调用两次,做差值。
perf_counter()会包含sleep()休眠时间,适用测量短持续时间
3. time.process_time()方法

返回当前进程的系统和用户CPU时间总和的值(以小数秒为单位)作为浮点数。
通常time.process_time()也用在测试代码时间上,根据定义,它在整个过程中。返回值的参考点未定义,因此我们测试代码的时候需要调用两次,做差值。
注意process_time()不包括sleep()休眠时间期间经过的时间。
4. 三者比较

    除了time模块,Python还提供了timeit模块。timeit模块提供了一种简单的方法来计算一小段Python代码,比如一些循环或者正则匹配。 timeit既有命令行界面,也有可调用界面。 避免了许多用于测量执行时间的常见陷阱。可以用于基准测试/分析目的的代码块。
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值