失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python程序运行时间的几种分析方法

python程序运行时间的几种分析方法

时间:2019-12-06 04:58:29

相关推荐

python程序运行时间的几种分析方法

在实际问题中,可能会遇到比较解决同一问题的不同方法之间的性能差异。而Python 提供了一个度量工具,为这些问题提供了直接答案。

从查阅资料的情况来看,测试运行时间的调用的模块主要有:time,timeit,datetime,profile 和pstats。其中,profile 和pstats模块提供了针对更大代码块的时间度量工具。以下主要以time,timeit,datetime为例进行说明。

1 time模块测试程序运行时间

在time模块中,计算时间的函数有两个time()和clock()。其中,time(time.time(),time返回的是UTC时间(seconds since the 00:00:00 UTC on January 1)。在很多系统,包括windows下精度很差,win32下的精度只有1/18.2秒。不过在Unix/Linux系统下,time()的精度还是很高的。)time()是计算现实世界的时间,而clock()是cpu 时钟。如果程序计算量不是很大,time()可能无法计算时间,从而导致程序测试失败。而clock()是利用cpu 时钟,时间计算精度较高。对比测试程序如下:

import time#利用time.clock()计时测试start_time1 = time.clock()i = 0string = ''while i < len(string):print(i, end=' ')i += 1end_time1 = time.clock()time1 = end_time1-start_time1print('\nRunning time1:', time1)#利用time.time()计时测试start_time2 = time.time()i = 0string = ''while i < len(string):print(i, end=' ')i += 1end_time2 = time.time()time2 = end_time2-start_time2print('\nRunning time2:', time2)

输出结果为:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 Running time1: 3.2431984176475974e-050 1 2 3 4 5 6 7 8 9 10 11 12 13 Running time2: 0.0

从中可以看出,time.time()用于测试运行时间是有限的,对于某些较短或运算量不大的程序是无法测量的。

2 timeit模块测试程序运行时间

timeit 模块定义了接受两个参数的 Timer 类。两个参数都是字符串。 第一个参数是你要计时的语句或者函数。 传递给 Timer 的第二个参数是为第一个参数语句构建环境的导入语句。 从内部讲, timeit 构建起一个独立的虚拟环境, 手工地执行建立语句,然后手工地编译和执行被计时语句。一旦有了 Timer 对象,最简单的事就是调用 timeit(),它接受一个参数为每个测试中调用被计时语句的次数,默认为一百万次;返回所耗费的秒数。Timer 对象的另一个主要方法是 repeat(), 它接受两个可选参数。 第一个参数是重复整个测试的次数,第二个参数是每个测试中调用被计时语句的次数。 两个参数都是可选的,它们的默认值分别是 3 和 1000000。 repeat() 方法返回以秒记录的每个测试循环的耗时列表。Python 有一个方便的 min 函数可以把输入的列表返回成最小值,如: min(t.repeat(3, 1000000))你可以在命令行使用 timeit 模块来测试一个已存在的 Python 程序,而不需要修改代码。

from timeit import Timerprint(Timer("sum(range(100))").timeit())

输出结果为:

1.547405913377044

3datetime模块测试程序运行时间

datetime同样是基于现实时钟的,同样是针对于运算量较大的程序,使用方法如下:

import datetimedef time_1():begin = datetime.datetime.now()sum(range(10000000))end = datetime.datetime.now()time = end - beginreturn timeprint(time_1())

输出结果为:

0:00:00.470582

如果觉得《python程序运行时间的几种分析方法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。