基础模块

提供用于性能分析的相关基类&函数定义

moprofiler.base.proxy(obj, prop, prop_name)[源代码]

为 object 对象代理一个属性

参数:
  • obj (object) – 被代理的对象
  • prop (object) – 代理返回的属性
  • prop_name (str) – 被代理的属性名
返回:

被代理之后的对象

返回类型:

object

moprofiler.base.get_callargs(func, *args, **kwargs)[源代码]

找到层层装饰器下最里层的函数的 callargs

参数:
  • func (function) – 被装饰过的函数
  • args (list) – 调用函数时的位置参数
  • kwargs (dict) – 调用函数时的关键字参数
返回:

调用参数字典

返回类型:

dict

moprofiler.base.is_instance_or_subclass(self_or_cls, super_cls)[源代码]

判断对象或类是否继承了指定类

参数:
  • self_or_cls (object) – 对象或类
  • super_cls (class) – 父类
返回:

判断结果

返回类型:

bool

class moprofiler.base.ProfilerMixin[源代码]

基类:object

分析器 Mixin 的基类

class moprofiler.base.ClassDecoratorBase(_function=None, fake_method=True)[源代码]

基类:object

类装饰器初始化

参数:
  • _function (types.FunctionType or types.MethodType) – 被封装的对象,由解释器自动传入,不需关心
  • fake_method (bool) – 是否将被装饰后的类装饰器伪装成方法,默认为是。 注意,伪装后仍然可以正常调用类装饰器中额外定义的对象属性, 此参数仅用于装饰类方法时使用,装饰函数时无效
func

被封装函数的 getter 方法

class moprofiler.base.ProfilerClassDecorator(_function=None, print_res=True, force_new_profiler=False, profiler_args=None, profiler_kwargs=None, **kwargs)[源代码]

基类:moprofiler.base.ClassDecoratorBase

分析器的类装饰器初始化

增加分析器相关的供外部使用的公共属性

参数:
  • _function (types.FunctionType or types.MethodType) – 被封装的对象,由解释器自动传入,不需关心
  • print_res (bool) – 是否在被装饰对象退出后立刻打印分析结果,默认为 True 。 当需要将多次调用结果聚集后输出时,可设为 False ,并通过调用被装饰函数/方法 (装饰后将被替换为 ProfilerClassDecorator )的 print_stats() 方法进行结果输出
  • force_new_profiler (bool) – 是否强制使用新的分析器,默认为
  • profiler_args (tuple) – 分析器工厂的位置参数列表
  • profiler_kwargs (dict) – 分析器工厂的关键字参数字典
profiler_factory

用于生产分析器的工厂

profiler = None

分析器实例对象

print_stats()[源代码]

打印统计结果

抽象方法,需子类实现