文 | 菊子皮(转载请注明出处)

关注公众号:

AIAS编程有道

环境:Python 3.7,VS Code

timeit模块使用

有时候需要测试创建某种变量而花费的时间、有时候需要测试某个函数的运行的时间,对于简单的Python程序使用Python自带timeit模块是不错的选择。

这里也只介绍经常使用的几个方法,更多内容可参考官方文档。Python3中的timeit模块可以用来测试小段代码的运行时间。其中主要通过两个函数来实现:timeit和repeat。

timeit. timeit(

stmt=‘pass’

,

setup=‘pass’

,

timer=

,

number=1000000

,

globals=None

)

使用给定语句、

setup

代码和

timer

函数创建一个

Timer

实例,并执行

number

次其

timeit()

方法。可选的

globals

参数指定用于执行代码的命名空间。

timeit.repeat(

stmt=‘pass’

,

setup=‘pass’

,

timer=

,

repeat=5

,

number=1000000

,

globals=None

)

使用给定语句、

setup

代码和

timer

函数创建一个

Timer

实例,并使用给定的

repeat

计数和

number

执行运行其

repeat()

方法。可选的

globals

参数指定用于执行代码的命名空间。

参数说明:

stmt:用于传入要测试时间的代码,可以直接接受字符串的表达式,也可以接受单个变量,也可以接受函数。传入函数时要把函数申明在当前文件中,然后在 stmt = ‘func()’ 执行函数,然后使用 setup = ‘from

main

import func’

setup:传入stmt的运行环境,比如stmt中使用到的参数、变量,要导入的模块等。可以写一行语句,也可以写多行语句,写多行语句时要用分号;隔开语句。

number:要测试的代码的运行次数,默认100000次,对于耗时的代码,运行太多次会比较慢,此时建议自己修改一下运行次数

repeat:指测试要重复几次,每次的结果构成列表返回,默认5次。

使用案例:

# <1>

print(timeit.timeit(stmt='list(i**2 for i in normal_list)', setup='normal_list=range(10000)', number=10))

# 0.0857056 结果也会与计算机性能有关

# <2>

print(timeit.repeat(stmt='list(i**2 for i in normal_list)', setup='normal_list=range(10000)', repeat=2, number=10))

# [0.08216990000000002, 0.055868999999999974]

# <3> setup 为复合语句

print(timeit.timeit(stmt='list(i**2 for i in normal_list)', setup='a=10000;normal_list=range(a)', number=10))

# 0.0660696

# <4>

print(timeit.repeat(stmt='list(i**2 for i in normal_list)', setup='a=10000;normal_list=range(a)', repeat=2, number=10))

# [0.06270019999999998, 0.054296299999999964]

# <5>

def func():

normal_list = range(10000)

L = [i**2 for i in normal_list]

# stmt为函数

print(timeit.timeit("func()", setup="from __main__ import func", number=10))

# 0.056916100000000025

# <6>

print(timeit.repeat("func()", setup="from __main__ import func", repeat=3, number=10))

# [0.057099300000000075, 0.05018290000000003, 0.04987839999999999]

程序说明:

<1> 运行语句

list(i**2 for i in normal_list)

其中语句的参数为

normal_list=range(10000)

一个10次所使用的时间。

<2> 在<1>的基础上,重复运行2次,每次运行的时间都放在一个列表中

<3> 提供参数的语句可以是多个

<4> 在<3>的基础上,重复运行2次,每次运行的时间都放在一个列表中

<5> 使用自定义函数情况

<6> 在<5>的基础上,重复运行3次,每次运行的时间都放在一个列表中

python timeit模块_如何在Python中使用timeit模块?相关推荐

  1. python 线性回归模型_如何在Python中建立和训练线性和逻辑回归ML模型

    python 线性回归模型 Linear regression and logistic regression are two of the most popular machine learning ...

  2. python 概率分布函数_如何在Python中实现这五类强大的概率分布

    匿名用户 1级 2016-04-25 回答 首页 所有文章 观点与动态 基础知识 系列教程 实践项目 工具与框架应用 工具资源 伯乐在线 > Python - 伯乐在线 > 所有文章 &g ...

  3. unbantu上python安装步骤_如何在Ubuntu中安装Python 3.6?

    Python是增长最快的主要通用编程语言.原因有很多,比如它的可读性和灵活性,易于学习和使用,可靠和高效. 有两个主要的Python版本被使用- 2和3 (Python的现在和未来);前者将看不到新的 ...

  4. python进程暂停_如何在Python中暂停多进程?

    我希望用户能够在怎么开始的实现它?在 我的代码是:# -*- coding: utf-8 -*- from PySide import QtCore, QtGui from Ui_MainWindow ...

  5. python 获取当前目录_如何在Python中获取当前的工作目录?

    python 获取当前目录 To get the current working directory in Python, there is a library function getcwd() i ...

  6. python 拟合正态分布_如何在Python中拟合双高斯分布?

    我试图使用Python获得数据(link)的双高斯分布.原始数据的格式为: 对于给定的数据,我想获得图中所示峰值的两个高斯分布.我用以下代码(source)进行了尝试:from sklearn imp ...

  7. python mqtt库_如何在 Python 中使用 MQTT

    Python 是一种广泛使用的解释型.高级编程.通用型编程语言.Python 的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词).Python 让开发者能 ...

  8. win10系统64位安装python什么版本_如何在win10中安装Python

    本文主要讲解win10如何安装python,希望对初学的小伙伴有帮助.环境:win 10 64位操作系统1.python下载https://www.python.org/downloads/2.x和3 ...

  9. eclipse配置python开发环境_如何在Eclipse中配置python开发环境

    展开全部 步骤1: 下载用于在2113Eclipse中开发Python的插件PyDev. 步骤2: 解压5261python.将解压后的features和plugins文件4102夹中的1653内容拷 ...

最新文章

  1. discuz7记录下url静态化的apache2.2配置
  2. mpls企业组网怎么样?
  3. linux磁盘使用情况脚本,技术|用 Linux Shell 脚本来监控磁盘使用情况并发送邮件...
  4. c 语言栈,C语言栈
  5. 这款耳机堪比千元级的AirPods
  6. MessageBox消息框 1126
  7. php 创建自定义文件夹,Laravel 自定命令以及生成文件的例子
  8. CAD无法打印的问题解决办法
  9. matlab文本文件操作
  10. Java 实现批量静默打印PDF文件
  11. ipa-server
  12. 时值年末,年度CSDN小峯的回顾过去的2020年(推荐)
  13. vue-awesome-swiper 设置autoHeight,最后不满一页也占了一页
  14. 微信红包封面小程序源码-逢年过节非常火爆
  15. 企业使用虚拟码号的优势!
  16. abaqus 复合材料edit composite layup中报错:没有指定坐标系
  17. 一般3d模型代做多少钱_3d打印一个模型多少钱
  18. Cocos Creator一步一步实现重力球游戏,附完整代码
  19. MacOS 系统版本更新Monterey12.3.1版之后l2tp无法正常访问
  20. 专访胡润:中国富豪正变得透明

热门文章

  1. Matlab中点乘和乘、除和点除的区别
  2. 面对微信小程序的火爆,很多人却陷入了这8个误区
  3. Js事件绑定时,函数名加括号和不加括号有什么区别
  4. RPC 框架 Dubbo 从理解到使用(一)
  5. 15、第三章数据链路层习题及参考答案
  6. 教育直播系统中不可或缺的功能部件:电子白板
  7. 注塑机数据采集网关实现制造类企业数字化!
  8. 【 PHP 】项目使用 libsodium 扩展
  9. 非常好用的OPCUA服务端模拟器 - Prosys OPC UA Simulation Server
  10. c语言趣味程序设计过桥,复试C语言 趣味程序设计