Python中测试代码执行时间的利器

liftword2个月前 (04-26)技术文章35

简介

作为 Python 开发者,我们都希望代码运行更快一些,今天给大家介绍一个实用的工具模块 timeit,它可以帮我们精确测量 Python 代码的执行时间。赶快来看看吧!

timeit 模块是 python 的内置模块,不需要另外安装。它为我们提供了一个重复执行代码片段的简单接口,可以准确地测量 Python 代码的执行时间,同时使用方法也非常简单,让我们能够更专注于业务代码本身,而不需要写额外的计时代码。

底层原理

timeit 模块利用 Python 中的 time 模块,在一个独立的进程中多次重复执行目标代码,计算总的执行时间。

示例代码

timeit 模块提供了一个函数 timeit(),它可以让我们测量一段代码的执行时间。timeit() 函数的语法如下:

timeit(stmt, setup=None, timer=None, number=1)

其中,各参数含义如下

  • stmt 是需要测量执行时间的代码
  • setup 是执行 stmt 之前需要执行的代码
  • timer 是用于测量时间的函数。默认情况下,timer 使用的是 time.perf_counter() 函数
  • number 是需要测量的代码的次数。默认情况下,number 是1

下面来看看它的基本使用示例

import timeit

def test_func():
  print("Hello, world!")

print(timeit.timeit(test_func, number=1000))

运行这段代码,我们会得到输出

Hello, world!

...

0.007531400000000001

这表示,test_func() 函数在 1000 次执行中,平均每次执行的时间为 0.007531400000000001 秒。

除了 timeit 方法,timeit 模块还提供了 repeat() 方法,这个方法可以多次执行一个函数,并返回每次执行的执行时间。timeit.repeat() 方法的语法如下:

timeit.repeat(stmt, repeat=3, setup=None, timer=None, number=1)

其中

  • stmt 是需要测量执行时间的代码
  • repeat 是需要执行的次数
  • setup 是执行 stmt 之前需要执行的代码
  • timer 是用于测量时间的函数。默认情况下,timer 使用的是 time.perf_counter() 函数
  • number 是需要测量的代码的次数。默认情况下,number 是 1

以下是一个使用 timeit.repeat() 方法测量函数执行时间的示例

import timeit

def test_func():
  return 10 ** 2

print(timeit.repeat(test_func, repeat=3))

运行这段代码,我们会得到以下输出

[0.0616678, 0.0615304, 0.062235100000000015]

小结

timeit 模块是一个非常简单易用的代码执行时间测量工具。它可以帮助我们快速测量代码的执行时间,并对代码进行优化。

相关文章

从零入门Python测试神器pytest!高效测试,代码质量飙升10倍

引言:为什么测试是开发者的"金钟罩"?在编程江湖中,未经测试的代码如同没有铠甲的战士。今天要介绍的pytest,正是Python领域测试覆盖率排名第一的利器(2023年PyPI官方数据...

Python单元测试最佳实践指南:编写高效测试的7个核心技巧

作为Python开发者,编写单元测试是最值得培养(并不断提升)的优秀习惯之一。它能帮助您及早发现错误、简化调试过程,并让您有信心进行代码修改而不破坏现有功能。但并非所有测试都具有同等价值!如果测试代码...

Python进阶-day19: 测试与调试

一、课程目标理解测试的重要性:掌握软件测试的基本概念,了解单元测试在提高代码质量和可维护性中的作用。学习测试框架:熟悉Python中两种主流测试框架unittest和pytest的使用方法,理解它们的...

10 个 Python 单行代码搞定 Scikit-learn 任务,效率提升 80%!

你是否厌倦了写冗长的代码?这 10 个 Python 单行代码将帮你搞定 80% 的 Scikit-learn 任务!由 KDnuggets 技术编辑兼内容专家 Kanwal Mehreen 于 20...

如何判断deep seek生成的代码是否符合项目的性能要求

要判断生成的代码是否符合项目的性能要求,可以从多个维度进行评估,下面为你详细介绍这些评估方法。1. 时间复杂度分析理论计算:依据代码里的算法和数据结构,从理论层面计算其时间复杂度。例如,对于一个简单的...

python代码的12个最佳使用技巧

0x01面向对象Python 是一门面向对象语言,因此我们有必要熟悉面向对象的一些设计原则。单一职责原则是指一个函数只做一件事,不要将多个功能集中在同一个函数中,不要大而全,要小而精。这样,当有需求变...