登陆

极彩国际-功能剖析之代码运转时刻核算——Python timeit 模块 介绍

admin 2019-10-31 202人围观 ,发现0个评论

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

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

我们使用 runtime 修极彩国际-功能剖析之代码运转时刻核算——Python timeit 模块 介绍饰器,对需要关注执行时间函数进行修饰,如下


见 Timeit

Python 内置模块 timeit 模块与 tim极彩国际-功能剖析之代码运转时刻核算——Python timeit 模块 介绍e 模块都可以实现对代码运行时间的计算,但 timeit 模块是专门用来测试代码运极彩国际-功能剖析之代码运转时刻核算——Python timeit 模块 介绍行时间的,提供了更多灵活的计算方法,并且相对精度也会更高。

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

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

timeit 函数

创建一个 Timer实例,返回运行 stmt 这段代码 number 遍所用的时间,单极彩国际-功能剖析之代码运转时刻核算——Python timeit 模块 介绍位为秒。

语法

参数说明

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

示例

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

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


repeat 函数

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

语法

参数说明

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

示例

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



请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP