参考:Python3.7中time模块的time()、perf_counter()和process_time()的区别

其他的博客太!长!了!我实在看不下去了,每次都不记得什么场景用什么函数。
让我来用表格总结一下各个函数的使用场景、特性。
并附上分别的测试速度的过程的样例代码。

使用场景、特性

这个表格提供了这些函数在不同方面的详细对比,方便根据具体需求选择合适的函数。

函数 使用场景 返回类型 精度 包含sleep时间 平台依赖性 特定点时间参考 特殊用途 最早支持版本 性能
time.time() 时间格式化,测试代码时间 浮点数 取决于系统 获取当前时间的时间戳 Python 初始版本 一般
time.time_ns() 时间格式化,测试代码时间 整数 非常高精度 获取当前时间的时间戳,以纳秒为单位 Python 3.7
time.perf_counter() 测试代码时间 浮点数 高精度 性能测试和基准测试 Python 3.3 非常高
time.perf_counter_ns() 测试代码时间 整数 非常高精度 短时间间隔计时,以纳秒为单位 Python 3.7 非常高
time.process_time() 性能分析和优化 浮点数 适合CPU时间测量 精确的CPU时间分析和优化 Python 3.3
time.process_time_ns() 性能分析和优化 整数 非常高精度 精确的CPU时间分析和优化,以纳秒为单位 Python 3.7 非常高
timeit.timeit() 微基准测试 浮点数 取决于代码 重复执行小段代码的性能测试 Python 2.6
time.clock() (已废弃) 性能分析(在Python 3.3以后废弃) 浮点数 取决于系统 CPU时间测量 Python 初始版本 中等(现已废弃)

这个表格涵盖了Python中常用的几种测量代码运行速度的函数及其特性,可供选择最合适的工具进行性能测试。需要注意的是,time.clock()函数在Python 3.3及以后的版本中已被废弃,不建议使用。并且,性能评估是相对的,并且可能受到具体使用场景和系统配置的影响

在这个表格中,系统时间调整影响表示函数返回的时间值是否可能受到系统时间更改的影响,适用场景是函数最典型的使用情境,特定点时间参考表示函数的时间计数是否从某个特定的时间点(如系统启动时)开始计算。这样的分类提供了更清晰的视角来理解和选择这些函数。

其中,由于 time.time_ns() 使用整数而不是浮点数,它还减少了与浮点数运算相关的精度损失和计算开销。整数运算通常比浮点数运算更快且更精确,这进一步提高了其性能表现。因此,在需要极高精度和性能的场合,time.time_ns() 是更优的选择。

样例代码

这里是使用Python中的不同时间测量函数来测试代码执行时间的样例代码:

  1. time.time():

    import time
    
    start = time.time()
    # 插入要测试的代码
    time.sleep(1) # 示例:休眠1秒
    end = time.time() print("执行时间:", end - start, "秒")
  2. time.perf_counter():

    import time
    
    start = time.perf_counter()
    # 插入要测试的代码
    time.sleep(1) # 示例:休眠1秒
    end = time.perf_counter() print("执行时间:", end - start, "秒")
  3. time.process_time():

    import time
    
    start = time.process_time()
    # 插入要测试的代码
    for _ in range(1000000): # 示例:执行一个循环
    pass
    end = time.process_time() print("CPU执行时间:", end - start, "秒")
  4. time.perf_counter_ns():

    import time
    
    start = time.perf_counter_ns()
    # 插入要测试的代码
    time.sleep(1) # 示例:休眠1秒
    end = time.perf_counter_ns() print("执行时间:", end - start, "纳秒")
  5. time.process_time_ns():

    import time
    
    start = time.process_time_ns()
    # 插入要测试的代码
    for _ in range(1000000): # 示例:执行一个循环
    pass
    end = time.process_time_ns() print("CPU执行时间:", end - start, "纳秒")
  6. time.time_ns():

    import time
    
    start = time.time_ns()
    # 插入要测试的代码
    time.sleep(1) # 示例:休眠1秒
    end = time.time_ns() print("执行时间:", end - start, "纳秒")
  7. timeit.timeit():

    import timeit
    
    code_to_test = """
    for _ in range(1000000):
    pass
    """
    execution_time = timeit.timeit(stmt=code_to_test, number=100) print("执行时间:", execution_time, "秒")

在这些示例中,你可以替换注释部分的代码,以测试你想要测量执行时间的实际代码段。

结尾声明

部分内容由GPT协助我整理完成,因为表格实在太难打了,使用的Prompt大意是:

1. 请根据你的知识将特性进一步细分,例如返回的类型、精度、其他特点,请将其他特点对比总结一下,同类的分一下类,根据你的知识库,完善这些函数别的特性,并请你将“其他特性”也分类归类,不要写成“其他特性”。现在请将你总结的全部使用场景、特性用表格总结,请你把你知道的能用来测Python程序的运行速度的函数都按照markdown表格进行总结。
2. 然后请分别输出各个函数用于测试代码时间的样例代码。

更多测试方法:python性能测试

本账号所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_46106285/article/details/134755192。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

【记录】Python|Python3程序测试速度的整个流程、方法对比和选取方式的更多相关文章

  1. Python入门-程序测试

    1.功能测试 常规测试 #常规测试代码,一个模块写功能,一个模块调用功能 #=============模块1:gongneng_ceshi def func(v1, v2): return v1* v ...

  2. Python执行效率测试模块timei的使用方法与与常用Python用法的效率比较

    timeit模块用于测试一段代码的执行效率 1.Timer类 Timer 类: __init__(stmt="pass", setup="pass", time ...

  3. Python的程序结构[2] -> 类/Class[2] -> 方法解析顺序 MRO

    方法解析顺序 / MRO (Method Resolution Order) 关于方法解析顺序(MRO)的详细内容可以参考文末链接,这里主要对 MRO 进行简要的总结说明以及一些练习示例. 经典类和新 ...

  4. 记录python接口自动化测试--把操作excel文件的方法封装起来(第五目)

    前面补充了如何来操作excel文件,这次把如何获取excel文件的sheet对象.行数.单元格数据的方法进行封装,方便后面调用 handle_excel.py# coding:utf-8 import ...

  5. 优雅地记录Python程序日志1:logging模块简介

    本文摘自:https://zhuanlan.zhihu.com/p/31893724 本篇涉及: logging模块的调用: 保存log日志为文件: 调整输入日志等级: 修改日志消息格式: 前言 在使 ...

  6. 使用配置文件方式记录Python程序日志

    开发者可以通过三种方式配置日志记录: 调用配置方法的Python代码显式创建记录器.处理程序和格式化程序. 创建日志配置文件并使用fileConfig() 函数读取. 创建配置信息字典并将其传递给di ...

  7. 优雅地记录Python程序日志2:模块组件化日志记录器

    本文摘自:https://zhuanlan.zhihu.com/p/32043593 本篇将会涉及: logging的各个模块化组件 构建一个组件化的日志器 logging的模块组件化 在上一篇文章中 ...

  8. 怎么样通过编写Python小程序来统计测试脚本的关键字

    怎么样通过编写Python小程序来统计测试脚本的关键字 通常自动化测试项目到了一定的程序,编写的测试代码自然就会很多,如果很早已经编写的测试脚本现在某些基础函数.业务函数需要修改,那么势必要找出那些引 ...

  9. 用python开发了一个简单apache web服务端范例,在win10 + apache2.4.9 + python3.5 测试成功

    #!D:\Programs\Python\Python35-32\python.exe import cgi def htmlTop():     print("Content-type: ...

  10. python 实现九型人格测试小程序

    用python实现九型人格测试,并把测试结果绘制成饼图,实现代码如下: # @Description: 九型人格 import xlrd, matplotlib.pyplot as plt data ...

随机推荐

  1. 超详细,DeepSeep 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方DeepSeek接入),建议收藏!

    在当今数字化时代,AI编程助手已成为提升开发效率的利器.DeepSeek作为一款强大的AI模型,凭借其出色的性能和开源免费的优势,成为许多开发者的首选.今天,就让我们一起探索如何将DeepSeek接入 ...

  2. 别再为文本提取抓狂!一站式文本提取神器Kreuzberg 助你解决PDF、图片、文档等多格式文件的文本提取难题

    大家好,我是六哥,相信很多朋友肯定都有过从各种文档里提取文本的经历,那过程可太让人头疼了!今天就给大家分享一款超实用的现代Python库--Kreuzberg,帮你轻松解决文本提取的难题. 一.Kre ...

  3. QT5笔记:12. 字符串和数值之间的转换

    字符串与进制转换的例子 /** * @brief Widget::on_btnCalcHex_clicked 从界面上获取十六进制字符串,然后转为十进制和二进制字符串写回界面 */ void Widg ...

  4. Qt 枚举类型 值、字符串、枚举类型互转

    枚举类型 class Enum : public QObject{ Q_OBJECT public: enum Fruit{ APPLE = 0, BANANA, POTATO } Q_ENUM(Fr ...

  5. docker - [04] 常用命令

    官方文档:https://docs.docker.com/reference/ 一.帮助命令 1.1.docker version 查看docker的版本信息 1.2.docker info 显示do ...

  6. AGC002E题解

    简要题意 桌上有 \(n\) 堆糖果,第 \(i\) 堆糖果有 \(a_i\) 个糖.两人在玩游戏,轮流进行,每次进行下列两个操作中的一个: 将当前最大的那堆糖果全部吃完: 将每堆糖果吃掉一个: 吃完 ...

  7. 数据挖掘 | 数据隐私(1) | 差分隐私 | 挑战数据隐私(Some Attempts at Data Privacy)

    L1-Some Attempts at Data Privacy 本随笔基于Gautam Kamath教授的系列课程:CS 860 - Algorithms for Private Data Anal ...

  8. FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战 🚀

    title: FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战 date: 2025/3/7 updated: 2025/3/7 author: cmdragon e ...

  9. nnUNet 使用方法

    首先明确分割任务. 其次明确研究方法和步骤. 再做好前期准备,如数据集的采集.标注以及其中的训练集/测试集划分. 其中的参考链接: (四:2020.07.28)nnUNet最舒服的训练教程(让我的奶奶 ...

  10. npm ERR! request to https://registry.npm.taobao.org/axios failed, reason: certificate has expired

    前言 一直使用 npm build没问题的,突然出现报错: npm WARN install Usage of the `--dev` option is deprecated. Use `--onl ...