第四章:日期和时间-time:时钟时间-处理器时钟时间

4.1.4 处理器时钟时间
time()返回的是一个墙上时钟时间,而clock()返回处理器时钟时间。clock()返回的值反映了程序运行时使用的实际时间。

import hashlib
import time

# Data to use to calculate md5 checksums
data = open(__file__,'rb').read()

for i in range(5):
    h = hashlib.sha1()
    print(time.ctime(), ':{:0.3f}{:0.3f}'.format(
        time.time(),time.clock()))

    for i in range(300000):
        h.update(data)
    cksum = h.digest()

在这个例子中,每次循环迭代时,会打印格式化的ctime()时间,以及time()和clock()返回的浮点值。
运行结果:
第四章:日期和时间-time:时钟时间-处理器时钟时间
一般情况下,如果程序什么也没有做,则处理器时钟不会“滴答”(tick)。

import time

template = '{} - {:0.2f} - {:0.2f}'

print(template.format(
    time.ctime(),time.time(),time.clock()
    ))

for i in range(3,0,-1):
    print('Sleeping',i)
    time.sleep(i)
    print(template.format(
        time.ctime(),time.time(),time.clock()
        ))

在这个例子中,循环几乎不做什么工作,每次迭代后都会睡眠。应用睡眠时,time()值会增加,而clock()值不会增加。
调用sleep()会从当前线程交出控制,并要求这个线程等待系统再次将其唤醒。如果程序只有一个线程,则这个函数时间上会阻塞应用,使它不做任何工作。
运行结果:
第四章:日期和时间-time:时钟时间-处理器时钟时间