Python timeit模块详解:timeit、repeat与Timer类用法

顾言
顾言
发布时间:2026-10-14| 5人浏览过
原创

本文详细介绍Python标准库timeit模块的三种核心用法:timeit()函数、repeat()函数以及Timer类。重点解析各函数的参数含义,包括stmt、setup、number及repeat等关键字参数的配置方法,并通过代码示例展示如何准确测量代码片段的执行时间,帮助开发者进行高效的Python性能分析。

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

  • timeit() 函数包含四个参数,所有参数均支持关键字传参,且各自拥有默认值。
  • stmt:用于传入待测试时间的代码片段。该参数可直接接收代码表达式、单个变量或函数对象。若传入函数,需在函数名后添加小括号以触发执行,例如设置为 stmt = 'func()'。
  • setup:用于定义 stmt 运行所需的环境,包括所需的参数、变量或需导入的模块等,例如 setup = 'from __main__ import func'。该参数支持单行或多行语句,多行语句之间需使用分号分隔。
  • 若未为 stmt 和 setup 参数赋值,则无法实现测试目的,因此这两个参数是必须提供的。
  • timer:该参数指定当前操作系统的基本时间单位,默认情况下会根据运行环境的操作系统自动获取(源码中已预定义),通常保持默认设置即可。
  • number:指定待测试代码的执行次数,默认值为1000000(一百万次)。对于执行耗时较长的代码,若运行次数过多将消耗大量时间,用户可根据需要自行调整运行次数。

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

  • repeat() 函数包含五个参数,所有参数均支持关键字传参,且各自拥有默认值。其参数含义与 timeit() 函数相同。
  • 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。