python使用timeit时间模块

作者:JSon liu 时间:2023-03-05 16:27:37 

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))

来源:https://blog.csdn.net/weixin_45912307/article/details/115436089

标签:python,timeit,时间
0
投稿

猜你喜欢

  • ADSI+ASP添加IP到IIS禁止访问列表中

    2011-04-02 10:42:00
  • opencv实现图像平移效果

    2022-09-30 00:22:06
  • JavaScript数学对象Math操作数字的方法

    2024-04-10 10:54:34
  • 在js(jquery)中获得文本框焦点和失去焦点的方法

    2024-04-26 17:14:20
  • Python标准库06之子进程 (subprocess包) 详解

    2021-05-24 02:00:25
  • 数据库Sql实现截取时间段和日期实例(SQL时间截取)

    2024-01-27 01:38:29
  • SQL server 2008 数据安全(备份和恢复数据库)

    2024-01-17 00:18:20
  • 一个图片后加载的代码

    2008-09-28 13:03:00
  • 基于Python实现开心消消乐小游戏的示例代码

    2022-03-20 13:19:10
  • Python设计模式编程中的备忘录模式与对象池模式示例

    2023-02-06 05:48:43
  • python super()函数的详解

    2023-08-08 10:09:42
  • DreamWeaver批处理提高篇

    2007-12-03 11:34:00
  • python模拟预测一下新型冠状病毒肺炎的数据

    2023-12-17 05:09:15
  • Oracle 下的开发日积月累

    2009-02-28 11:08:00
  • scrollWidth,clientWidth,offsetWidth的区别

    2024-04-22 22:29:00
  • 浅析Python 中整型对象存储的位置

    2021-10-06 13:40:20
  • 轻量级数据库SQL Server Express LocalDb介绍

    2024-01-13 14:29:15
  • 得到自增列的下一个会插入的id

    2024-01-20 17:32:48
  • 如何判断用户是否非正常离开聊天室?

    2010-01-18 20:30:00
  • python通过微信发送邮件实现电脑关机

    2022-03-20 17:58:37
  • asp之家 网络编程 m.aspxhome.com