python 元类型编程,实现方法级的时间性能记录(performanceCount)
2013-01-26 20:57
531 查看
需求: 系统中的每个操作流程,需要打印所有被执行到的方法的耗时。
实现原理,利用python的元类型编程,动态改变class的创建过程,拦截class的方法,加上自定义的耗时记录。把记录导出到csv文件里面,方便对数据进行删选和排序。
具体代码实现:
例子如何使用,
运行结果:
实现原理,利用python的元类型编程,动态改变class的创建过程,拦截class的方法,加上自定义的耗时记录。把记录导出到csv文件里面,方便对数据进行删选和排序。
具体代码实现:
#-*- coding: UTF-8 -*- #------------------------------------------------------------------------------- # Name: performanceCountMeta # Purpose: 记录每个方法的时间消耗,帮助程序员方便的查找系统的性能瓶颈 # # Author: ankier # # Created: 26-01-2013 # Copyright: (c) ankier 2013 # Licence: <your licence> #------------------------------------------------------------------------------- from types import FunctionType import time, datetime import csv pfile = file('E:\performanceCount.csv', 'ab') writer = csv.writer(pfile) writer.writerow(['Module', 'method', 'spend time', 'time Start', 'time End']) pfile.close() ## @summary: wrap 方法,AOP实现,记录每个函数的执行时间 def _RecordPerformance(func): def warp(*args): glos = func.func_globals model = glos['__name__'] methodName = func.func_name #Start time starTime = time.time() startStr = datetime.datetime.now().isoformat() result = func(*args) #End time endTime = time.time() endStr = datetime.datetime.now().isoformat() SpendTime = endTime - starTime row = [model, methodName, str(SpendTime), startStr, endStr] pfile = file('E:\performanceCount.csv', 'ab') writer = csv.writer(pfile) writer.writerow(row) pfile.close() return result return warp ## @summary: 性能计数器的元类型,动态修改类的创建过程,wrap 一些特定的方法。实现方法拦截,记录性能 class PerformanceCountMeta(type): def __new__(cls, name, bases, dct): for name, value in dct.iteritems(): if name not in ('__metaclass__', '__init__', '__module__') and \ type(value) == FunctionType: value = _RecordPerformance(value) dct[name] = value return type.__new__(cls, name, bases, dct)
例子如何使用,
## @summary: word host 窗口 class WordHostWindow(wx.Window): __metaclass__ = PerformanceCountMeta def __init__(self, parent): wx.Window.__init__(self, parent)
运行结果:
相关文章推荐
- Python高级编程-如何实现用户的历史记录功能?
- Spark机器学习入门·编程(scala/java/python)实现分析商店购买记录
- python 元类型编程,实现匿名验证器的装饰器AuthenticationDecoratorMeta
- python 元类型编程, 单例模式SingleTon的一种实现方式
- python核心编程学习记录之映射和集合类型
- [Python高效编程] - 实现用户历史记录功能
- Oracle中如何获得日期类型字段最新(时间最晚)的记录
- 使用Python中的greenlet包实现并发编程的入门教程
- python核心编程学习记录之函数与函数式编程
- Python中实现对Timestamp和Datetime及UTC时间之间的转换
- JAVA网络编程实现基于TCP协议的时间服务(向服务器查询当前时间)
- Python使用time模块实现指定时间触发器示例
- 不同梯度下降方法实现逻辑回归性能比较(python)
- 用python实现csdn第四届在线编程大赛·线上初赛:带通配符的数
- javascript实现的实时更新时间记录(运行时长)
- 编程实现设置“启动与故障恢复”的“在需要时显示恢复选项的时间”
- Python对象类型总结(学习记录)
- 最坏情况为线性时间的选择算法之Python实现
- 装饰器应用,Python模块学习之(__call__)实现准确计算函数运行时间
- Python GUI编程各种实现的对比