python time 模块

计算机的系统时钟设置为特定的日期、时间和时区。内置的 time 模块让 Python程序能读取系统时钟的当前时间。在 time 模块中, time.time()和 time.sleep()函数是最有用的模块。
 

time.time()函数
Unix 纪元是编程中经常参考的时间: 1970 年 1 月 1 日 0 点,即协调世界时(UTC)。 time.time()函数返回自那一刻以来的秒数,是一个浮点值(回想一下,浮点值只是一个带小数点的数)。这个数字称为 UNIX 纪元时间戳。例如,在交互式环境中输入以下代码:

>>> import time
>>> time.time()
1425063955.068649

这里,我在 2015 年 2 月 27 日,太平洋标准时间 11:05(或 7:05 PM UTC),调用time.time()。返回值是 Unix 纪元的那一刻与 time.time()被调用的那一刻之间的秒数。纪元时间戳可以用于剖析代码,也就是测量一段代码的运行时间。如果在代码块开始时调用 time.time(), 并在结束时再次调用,就可以用第二个时间戳减去第一个,得到这两次调用之间经过的时间。例如,打开一个新的文件编辑器窗口,然后输入以下程序:

import time
def calcProd():
    # Calculate the product of the first 100,000 numbers.
    product = 1
    for i in range(1, 100000):
        product = product * i
    return product

startTime = time.time()
prod = calcProd()
endTime = time.time()
print('The result is %s digits long.' % (len(str(prod))))
print('Took %s seconds to calculate.' % (endTime - startTime))

我们定义了函数 calcProd(),循环遍历 1 至 99999 的整数,返回它们的乘积。我们调用 time.time(),将结果保存在 startTime 中。调用 calcProd()后,我们再次调用 time.time(),将结果保存 endTime 中。最后我们打印 calcProd()返回的乘积的长度,以及运行 calcProd()的时间。将该程序保存为 calcProd.py,并运行它。输出看起来像这样:

The result is 456569 digits long.
Took 2.844162940979004 seconds to calculate.

另一种剖析代码的方法是利用 cProfile.run()函数。与简单的 time.time()技术相比,它提供了详细的信息。 cProfile.run()函数在 https://docs.python.org/3/library/profile.html 有解释。
 

time.sleep()函数
如果需要让程序暂停一下,就调用 time.sleep()函数,并传入希望程序暂停的秒数。在交互式环境中输入以下代码

>>> import time
>>> for i in range(3):
...     print('Tick')
...     time.sleep(1)
...     print('Tock')
...     time.sleep(1)
...
Tick
Tock
Tick
Tock
Tick
Tock
>>> time.sleep(5)

for 循环将打印 Tick,暂停一秒钟,打印 Tock,暂停一秒钟,打印 Tick,暂停,如此继续,直到 Tick 和 Tock 分别被打印 3 次。time.sleep()函数将阻塞(也就是说,它不会返回或让程序执行其他代码),直到传递给 time.sleep()的秒数流逝。例如,如果输入 time.sleep(5) ,会在 5 秒后才看到下一个提示符(>>>)。请注意,在 IDLE 中按 Ctrl-C 不会中断 time.sleep()调用。 IDLE 会等待到暂停结束,再抛出 KeyboardInterrupt 异常。要绕过这个问题,不要用一次 time.sleep(30)调用来暂停 30 秒,而是使用 for 循环执行 30 次 time.sleep(1)调用。

>>> for i in range(30):
...    time.sleep(1)

如果在这 30 秒内的某个时候按 Ctrl-C, 应该马上看到抛出 KeyboardInterrupt 异常。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值