Python 中 time.clock() 和 time.time() 的联系和区别

联系

Python 中有个内置标准模块——time 模块,该模块提供了各种时间相关的函数。

而在 time 模块中有两个函数:clock() 和 time(),都能用作计算程序运行的时间,其用法如下:

  • clock()
import time


# 创建列表推导式时间开销
time.clock()
list_ = [x for x in range(0, 1000000, 2)]
lt = time.clock()
print(f'创建列表推导式时间开销:{lt}')

# 运行结果:
创建列表推导式时间开销:0.0389006
  • time()
import time


# 创建列表推导式时间开销
start = time.time()
list_ = [x for x in range(0, 1000000, 2)]
end = time.time()
print(f'创建列表推导式时间开销:{end - start}')

# 运行结果:
创建列表推导式时间开销:0.03390932083129883

从结果可以看出,除了时间的精确位数不同外,那还有其他的什么区别呢?

区别

time.clock()

在 Unix 上,将当前处理器时间返回为以秒为单位的浮点数。精确度,实际上是“处理器时间”含义的定义,取决于同名 C 函数的精度。

在 Windows 上,此函数返回自第一次调用此函数以来经过的 wallclock 秒数,作为浮点数,基于Win32函数 QueryPerformanceCounter()。分辨率通常优于1微秒。

由于程序是在 Windows 上运行的,在创建列表之前调用了一次 time.clock() 函数,创建完后第二次调用 time.clock() 时,会返回一个 wallclock 秒数的浮点数,作为程序运行的一个时间差。

time.time()

返回以浮点数表示的从 epoch 开始的秒数的时间值。 epoch 的具体日期和 leap seconds 的处理取决于平台。 在 Windows 和大多数 Unix 系统中, epoch 是 1970 年 1 月 1 日 00:00:00 (UTC),并且闰秒将不计入从 epoch 开始的秒数。 这通常被称为 Unix 时间。 要了解给定平台上 epoch 的具体定义,请查看 gmtime(0)。

epoch 是时间开始的点,并且取决于平台。对于Unix,epoch 是1970年1月1日00:00:00(UTC)。要找出给定平台上的 epoch,请查看 time.gmtime(0) 。

UTC 是协调世界时(以前称为格林威治标准时间,或 GMT)。缩写 UTC 不是错误,而是英语和法语之间的妥协。
print(time.gmtime(0))

# 运行结果:
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

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

返回的数字 time() 可以通过将其传递给 gmtime() 函数或转换为 UTC 中更常见的时间格式(即年、月、日、小时等)或通过将它传递给 localtime() 函数获得本地时间。在这两种情况下都返回一个struct_time 对象,日历日期组件可以从中作为属性访问。

t = time.time()
print(time.gmtime(t))
print(time.localtime(t))

# 运行结果:
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=6, tm_hour=8, tm_min=51, tm_sec=30, tm_wday=6, tm_yday=341, tm_isdst=0)
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=6, tm_hour=16, tm_min=51, tm_sec=30, tm_wday=6, tm_yday=341, tm_isdst=0)

Tips:其他的详细介绍还请查看 Python 官方文档(可以设置中文):https://docs.python.org/zh-cn/3.6/library/time.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值