python - timeit 时间模块


Posted in Python onApril 06, 2021

1. timeit.timeit(stmt=‘pass', setup=‘pass', timer=<default timer>, number=default_number)

  • timeit() 函数有四个参数,每个参数都是关键字参数,都有默认值。
  • stmt:传入需要测试时间的代码,可以直接传入代码表达式或单个变量,也可以传入函数。传入函数时要在函数名后面加上小括号,让函数执行,如 stmt = ‘func()' 。
  • setup:传入 stmt 的运行环境,如 stmt 中使用到的参数、变量,要导入的模块等,如 setup = 'from __main__ import func'。可以写一行语句,也可以写多行语句,写多行语句时用分号隔开。
  • 如果 stmt 和参数 setup 参数不传值,那么就失去了测试的意义,所以这两个参数是必要的。
  • timer: timer参数是当前操作系统的基本时间单位,默认会根据当前运行环境的操作系统自动获取(源码中已经定义),保持默认即可。
  • number:要测试的代码的运行次数,默认1000000(一百万)次,对于耗时的代码,运行太多次会花很多时间,可以自己修改运行次数。

2. timeit.repeat(stmt="pass", setup="pass", timer=default_timer, repeat=default_repeat, number=default_number)

  • repeat()函数有五个参数,每个参数都是关键字参数,都有默认值。参数含义与timer()相同
  • repeat:表示测试要重复几次,可以理解为将相同参数的 timeit() 函数重复执行。最终的结果构成一个列表返回,repeat 默认为3次。

3. class timeit.Timer(stmt=‘pass', setup=‘pass', timer=<timer function>)

  • 计算小段代码执行速度的类,构造函数需要的参数有stmt,setup,timer。
  • 前两个参数的默认值都是pass,timer默认会根据当前运行环境的操作系统自动获取;前两个参数都可以包含多个语句,多个语句间使用分号;或新行隔开
import timeit
def t1():
 li = [i for i in range(100000)]
def t2():
 li = []
 for i in range(100000):
  li += [i]
def t3():
 li = []
 for i in range(100000):
  li.append(i)
def t4():
 li = []
 list(range(100000))
def t5():
 li = []
 for i in range(100000):
  li.extend([i])
def t6():
 li = []
 for i in range(100000):
  li.insert(0,i)

# 方式1:timeit.timeit()
# list_t1 = timeit.timeit('t1()','from __main__ import t1',number=1)
# print("i for i in range(100000): %s" %(list_t1))

# 方式2:timeit.repeat()
# list_t2 = timeit.repeat('t2()','from __main__ import t2',repeat=1,number=1)
# print("li += i: %s" %(str(list_t2)))

# 方式3:timeit.Timer
# timer3 = timeit.Timer('t3()','from __main__ import t3')
# print("li.append(i): %s" %(timer3.timeit(number=1)))

# 直接传入字符串对象
# list_l4 = timeit.timeit('li = [i for i in range(1000)]',number=1)
# print(str(list_l4))

# 传入多个函数对象(;或空行分隔)
list_l5 = timeit.repeat('t4();t5();t6()','from __main__ import t4;from __main__ import t5;from __main__ import t6',repeat=1,number=1)
print(str(list_l5))

以上就是python使用timeit统计运行时间模块的详细内容,更多关于python使用timeit的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
Python and、or以及and-or语法总结
Apr 14 Python
用Python遍历C盘dll文件的方法
May 06 Python
浅析python递归函数和河内塔问题
Apr 18 Python
Python有序查找算法之二分法实例分析
Dec 11 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
Python封装原理与实现方法详解
Aug 28 Python
python爬取Ajax动态加载网页过程解析
Sep 05 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
教你用Python+selenium搭建自动化测试环境
Jun 18 Python
python制作图形界面的2048游戏, 基于tkinter
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 #Python
python删除csv文件的行列
Apr 06 #Python
python使用pygame创建精灵Sprite
python 逐步回归算法
python 通过使用Yolact训练数据集
python生成随机数、随机字符、随机字符串
Apr 06 #Python
You might like
php进行支付宝开发中return_url和notify_url的区别分析
2014/12/22 PHP
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
js实现消息滚动效果
2017/01/18 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
Python 占位符的使用方法详解
2019/07/10 Python
python中update的基本使用方法详解
2019/07/17 Python
Python 内置变量和函数的查看及说明介绍
2019/12/25 Python
python如何删除列为空的行
2020/07/17 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
你所在的项目是如何确定版本号的
2015/12/28 面试题
学校食堂采购员岗位职责
2013/12/05 职场文书
信息技术课后反思
2014/04/27 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
企业培训简报范文
2015/07/20 职场文书
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers