我们先来看一下python3中help(time):


关于time库中表示时间的方法,官方给出了2种:
1.从1970-01-01 00:00:00 UTC,开始到现在所经历的时间,以浮点数的'秒'来表示
time.time()1517362540.347517
2.用结构化的时间组(year,month,day,hours,minutes,seconds....)来表示从1970-01-01 00:00:00 UTC,开始到现在所经历的时间.
time.gmtimetime.struct_time
time包中的功能都很实用:
time.clock()返回程序运行的整个时间段中中CPU运行的时间,下面会重点介绍
time.sleep()爬虫中常用,让程序暂停执行指定的秒数,如time.sleep(2)
time.localtime()用结构化的时间组,表示本地时间
time.localtimetime.struct_timetype(time.localtime)class 'time.struct_time'
time.ctime()用字符串string类型表示时间。
time.ctime()'Wed Jan 31 09:49:09 2018'
time.mktime()将本地时间列表转化为浮点数的秒来表示
time.mktime(time.localtime())1517363569.0
time.strftime()将时间组时间转化为指定格式的String类
time.strftime)'2018-01-31 10:04:26'
time.strptime()将String类时间转化为时间组格式
time.strptime)time.struct_time
time.tzset()更改本地时区(这个功能表示没用过~)
现在我想用time来计算一下程序执行的时间:
定义一个函数run():
def run: start = time.time for i in range: j = i * 2 for k in range: t = k print end = time.time print

可以看到,程序执行时间是5.73039174079895s。
现在,让我们用time.clock()来看看程序执行过程中CPU执行了多长时间:
def run2: start = time.clock for i in range: j = i * 2 for k in range: t = k print end = time.clock print

可见,此段代码CPU执行时间为:5.3150249999999915。
那么问题来了,CPU真的执行了这么长时间么?会不会有什么东西是我没考虑进去的呢?
仔细看一下,这段程序主要内容就是两个for循环,for循环执行计算的时候CPU肯定是在运行的,那么print()函数打印期间这个时间段的CPU执行时间有没有算进去?
带着疑问,我们进行第三次测试,此次我们去掉print(),直接让CPU完成整个for循环的计算:
def run3: start = time.clock for i in range: j = i * 2 for k in range: t = k end = time.clock print
解果:
run3()CPU执行时间: 0.04683999999997468
可以看见,CPU的执行时间瞬间降低到0.04s,细想一下,其实不难理解。
因为去掉了print(),所以整个run3()函数就只剩下完整的for循环,CPU可以连续执行,(不必一遍for循环一边print()来回切换),连续执行的CPU还是很快的~
所以,这给了我一个启发,以后写代码时,要精简不必要的开销,譬如经常使用print()。。。