python3计算运行时间_性能分析之代码运行时间计算——Python timeit 模块 介绍

7055bc75-40e3-4c00-912f-c24c728a7fc6

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

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

f4473643f67844a9b3f37cb2300c5fd2

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

922d1e3f267c40dca7a36a734c155a5e

见 Timeit

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

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

054a5a02deb64300935069976f5526c0

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

timeit 函数

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

语法

495d64bc176b45779dd0ad668059cd92

参数说明

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

示例

35684b99d46a43d1acaa8571b5da6df9

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

7bc11d2ff62d440183b523197e08fe1b

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

ef8c70a0fcbb46dc9021e36a9bb6fbcb

repeat 函数

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

语法

93ba6ff2b06f46afa31a41336d1cff33

参数说明

  • 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次,每一次测量中语句被执行的次数。

示例

ac451e45d2514109ba7bc054a442cb97

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

027106d334c142668b3260e0682a55a1


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值