脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python如何统计函数调用的耗时

Python如何统计函数调用的耗时

2024-04-25 21:34小锋学长生活大爆炸 Python

这篇文章主要为大家详细介绍了如何使用Python实现统计函数调用的耗时,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

 相比于timerit等装饰器用法,我希望能不修改函数,只统计函数调用的用时。常规方法是在函数调用前后添加time,比如:

# 开始计时
start_time = time.perf_counter()
 
# 调用函数
x = xxx()
 
# 结束计时
end_time = time.perf_counter()

但如果有很多这样的函数,每次都写这么多实在太麻烦。

实际上我们可以通过with的方式来计时。所以,代码如下:

import time
 
class Timer:
    """
    一个计时上下文管理器,用于测量代码块的执行时间。
    它可以根据用户的需求以秒或纳秒为单位测量时间。
    
    属性:
        use_ns (bool): 如果为True,则计时器以纳秒为单位测量时间;如果为False,则以秒为单位。
        start (float|int): 测量开始的时间。
        end (float|int): 测量结束的时间。
        interval (float|int): 计算的开始和结束时间之间的持续时间。
    """
 
    def __init__(self, use_ns=False):
        """
        使用选择是否使用纳秒精度初始化 Timer。
        参数:
            use_ns (bool): 确定是否使用纳秒进行时间测量,默认为False。
        """
        self.use_ns = use_ns
        self.start = None
        self.end = None
        self.interval = None
 
    def __enter__(self):
        """
        启动计时器。当进入上下文块时记录开始时间。
        返回:
            Timer: 返回自身对象,以便在上下文外部访问属性。
        """
        if self.use_ns:
            self.start = time.perf_counter_ns()
        else:
            self.start = time.perf_counter()
        return self
 
    def __exit__(self, exc_type, exc_value, traceback):
        """
        结束计时器。当退出上下文块时记录结束时间。
        此函数还计算时间间隔并打印经过的时间。
        参数:
            exc_type: 如果在上下文中引发异常,则为异常类型。
            exc_value: 如果引发异常,则为异常值。
            traceback: 如果发生异常,则为回溯详细信息。
        返回:
            None
        """
        if self.use_ns:
            self.end = time.perf_counter_ns()
            self.interval = self.end - self.start
            print(f"经过时间:{self.interval} 纳秒")
        else:
            self.end = time.perf_counter()
            self.interval = self.end - self.start
            print(f"经过时间:{self.interval:.6f} 秒")

用法示例:

def test_func():
    for i in range(100000):
        pass
 
# 使用 Timer 类的示例
with Timer(use_ns=True) as timer_ns:
    test_func()
print(f"记录的时间(纳秒):{timer_ns.interval}")
 
with Timer(use_ns=False) as timer_sec:
    test_func()
print(f"记录的时间(秒):{timer_sec.interval:.6f}")

Python如何统计函数调用的耗时

到此这篇关于Python如何统计函数调用的耗时的文章就介绍到这了,更多相关Python统计函数调用耗时内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/sxf1061700625/article/details/138173756

延伸 · 阅读

精彩推荐
  • Python详解Python中第三方库Faker

    详解Python中第三方库Faker

    这篇文章主要介绍了Python中第三方库-Faker的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    南枝向暖北枝寒MA12402020-09-26
  • PythonPython实现基于POS算法的区块链

    Python实现基于POS算法的区块链

    这篇文章主要介绍了Python实现基于POS算法的区块链,今天我们就来认识POS(proof of stake)算法。需要的朋友可以参考下...

    Tiny熊4352021-03-26
  • PythonPython使用win32com模块实现数据库表结构自动生成word表格的方法

    Python使用win32com模块实现数据库表结构自动生成word表格的方法

    这篇文章主要介绍了Python使用win32com模块实现数据库表结构自动生成word表格的方法,结合实例形式分析了win32com模块下载、连接mysql、查询获取表结构以及使...

    jaysonhu14222021-03-18
  • PythonPython属性和内建属性实例解析

    Python属性和内建属性实例解析

    这篇文章主要介绍了Python属性和内建属性实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    小小程序员ol3502020-04-25
  • PythonPython办公自动化SFTP详解

    Python办公自动化SFTP详解

    这篇文章主要介绍了Python办公自动化SFTP详解,sftp和ftp的区别在安全通道,使用的协议,链接方式,安全性等方面都有不同,更多相关内容需要的小伙伴可...

    panda_2254004392022-08-01
  • Pythonpython 特殊属性及方法详细解析

    python 特殊属性及方法详细解析

    这篇文章主要介绍了python 特殊属性及方法详细解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下...

    不负韶华ღ3752022-07-20
  • Pythonpython格式化输出实例(居中、靠右及靠左对齐)

    python格式化输出实例(居中、靠右及靠左对齐)

    所谓格式化输出就是数据按照某种特殊的格式和要求进行输出,下面这篇文章主要给大家介绍了关于python格式化输出(居中、靠右及靠左对齐)的相关资料,文中...

    Lucky小黄人4452022-12-08
  • Pythonpython中ASCII码和字符的转换方法

    python中ASCII码和字符的转换方法

    今天小编就为大家分享一篇python中ASCII码和字符的转换方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    是世博呀12662021-03-15