快捷搜索:  汽车  科技

python编程时钟教程(性能分析之代码运行时间计算)

python编程时钟教程(性能分析之代码运行时间计算)示例参数说明不难看出,timeit 还是比较灵活简单的。接下来,我们深入的了解一下 timeit 模块常用的两个函数 。创建一个 Timer实例,返回运行 stmt 这段代码 number 遍所用的时间,单位为秒。语法

python编程时钟教程(性能分析之代码运行时间计算)(1)

通过修饰器实现函数运行时间的计算

在之前介绍Python修饰器的几篇文章中,提到修饰器的一种应用场景——计算并打印代码执行时间,如下 runtime 修饰器:

python编程时钟教程(性能分析之代码运行时间计算)(2)

我们使用 runtime 修饰器,对需要关注执行时间函数进行修饰,如下

python编程时钟教程(性能分析之代码运行时间计算)(3)


见 Timeit

Python 内置模块 timeit 模块与 time 模块都可以实现对代码运行时间的计算,但 timeit 模块是专门用来测试代码运行时间的,提供了更多灵活的计算方法,并且相对精度也会更高。

我们先来看一下,同样计算一个函数的运行时间,使用 timeit 如何实现。

python编程时钟教程(性能分析之代码运行时间计算)(4)

不难看出,timeit 还是比较灵活简单的。接下来,我们深入的了解一下 timeit 模块常用的两个函数 。

timeit 函数

创建一个 Timer实例,返回运行 stmt 这段代码 number 遍所用的时间,单位为秒。

语法

python编程时钟教程(性能分析之代码运行时间计算)(5)

参数说明

  • stmt:用于传入要测试时间的代码,可以直接接受字符串的表达式,也可以接受单个变量,也可以接受函数。传入函数时要把函数申明在当前文件中,然后在 stmt = 'func()' 执行函数,然后使用 setup = 'from main import func'。
  • setup:初始化代码或构建环境的导入语句,比如 stmt中使用到的参数、变量,要导入的模块等,多行语句的话,使用分号分隔,同时该语句不计入时间,一般是 from ... import ...
  • timer:计时函数,win32下是time.clock(),linux下是 time.time(),Python的标准库手册推荐在任何系统下都尽量使用 time.clock()
  • number:默认 100000,每一次测量中语句被执行的次数。

示例

python编程时钟教程(性能分析之代码运行时间计算)(6)

执行上述代码,输出结果为:

python编程时钟教程(性能分析之代码运行时间计算)(7)

如果我们只是想计算 com函数里 sum([i 2 for i in rn]) 代码的运行时间,我们可以直接使用 timeit.timeit 方法,上述代码可以调整为:

python编程时钟教程(性能分析之代码运行时间计算)(8)


repeat 函数

创建一个 Timer实例,通过repeat 参数指定重复测试的次数,返回包含每次测试的执行时间的列表,利用这一函数可以很方便得实现多次试验取平均的方法。

语法

python编程时钟教程(性能分析之代码运行时间计算)(9)

参数说明

  • stmt:用于传入要测试时间的代码,可以直接接受字符串的表达式,可以接受单个变量或者函数。传入函数时要把函数申明在当前文件中,然后在 stmt = 'func()' 执行函数,然后使用 setup = 'from main import func'
  • setup:初始化代码或构建环境的导入语句,比如 stmt中使用到的参数、变量,要导入的模块等,多行语句的话,使用分号分隔,同时该语句不计入时间,一般是 from ... import ...
  • timer:计时函数,win32下是 time.clock(),linux下是 time.time(),Python的标准库手册推荐在任何系统下都尽量使用 time.clock()
  • repeat:默认3次,测试要重复几次,每次的结果构成列表返回。
  • number:默认100000次,每一次测量中语句被执行的次数。

示例

python编程时钟教程(性能分析之代码运行时间计算)(10)

执行上述代码,输出结果为:

python编程时钟教程(性能分析之代码运行时间计算)(11)



猜您喜欢: