【Python】模块学习之(__call__)实现准确计算函数运行时间

背景

博主在写自动化的过程中,有遇到有的用例运行缓慢的问题,想起在上一家公司的的“自动化工厂”有一个指标:两小时内运行完所有的用例才算合格。所以想计算每一个用例的运行时间。

思路

因为使用的POM模型,每一个用例都是一个函数,所以实际需要得到的是函数运行的时间

在每一个函数运行开始的时候打一个标记,结束的时候打一个标记可以得到结果,但是比较麻烦,所以想到了装饰器

所有的函数都是可调用对象。使用__call__()函数可以将一个类实例变成一个可调用对象

在使用装饰器的时候,遇到了各种问题,都已经一一解决,最终代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import time
from logging_save import logger
 
 
class time_count(object):
    def __init__(self):
        pass
 
    def __call__(self,func):
        def _call(*args, **kw):
            begintime = time.clock()
            func(*args, **kw)
            end_time = time.clock()
            runtime = end_time -begintime
            logger.info('ran %s cost %.3f s' % (func.__name__, runtime))
        return _call
 
 
class bss(object):
 
    @time_count()  # 直接进行调用
    def runfunc(self):
        time.sleep(3)
        print 'runfunc running'
 
bs = bss()
bs.runfunc()
posted @   Bingo-he  阅读(717)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示

目录导航