Shortcut

注意

此文档中列出的为 moprofiler 对外提供功能的捷径说明,从而缩短调用路径

提供针对时间、内存的分析器,以及秒表日志打点工具

moprofiler.time_profiler(_function=None, name='', print_res=True, stream=None, output_unit=None, stripzeros=False, force_new_profiler=False)[源代码]

时间分析器装饰器

逐行分析被装饰函数每行的执行时间

参数:
  • _function (types.FunctionType or types.MethodType) – 被封装的对象,由解释器自动传入,不需关心
  • name (str) – 关键字参数,被装饰方法所使用的时间分析器名称,默认为使用被装饰方法的方法名
  • print_res (bool) – 是否在被装饰对象退出后立刻打印分析结果,默认为 True 。 当需要将多次调用结果聚集后输出时,可设为 False ,并通过 Mixin 中的 time_profiler 进行结果输出
  • stream (object) – 输出方式,默认为 stdout ,可指定为文件
  • output_unit (str) – 输出单位
  • stripzeros (bool) – 是否去零
  • force_new_profiler (bool) – 是否强制使用新的分析器,默认为
返回:

装饰后的函数或方法

返回类型:

types.FunctionType or types.MethodType

class moprofiler.TimeProfilerMixin[源代码]

基类:moprofiler.base.ProfilerMixin

时间分析器 Mixin 类

用以提供复杂的时间分析功能,如:

  1. 针对需要多次调用的方法进行累加分析的场景
  2. 在一次代码执行流程中同时分析多个方法,并灵活控制分析结果的输出
classmethod time_profiler(name, raise_except=True, force_new_profiler=False)[源代码]

获取指定的时间分析器

参数:
  • name (str) – 指定的时间分析器名称
  • raise_except (bool) – 若不存在是否抛出异常,默认为是,若为否,则会生成指定名称的分析器并返回
返回:

时间分析器对象

返回类型:

LineProfiler

引发:

KeyError – 获取的键名不存在

moprofiler.time_profiler_getter(name, raise_except=True, force_new_profiler=False)

闭包方法,获取时间分析器

参数:
  • name (str) – 指定的时间分析器名称
  • raise_except (bool) – 若不存在是否抛出异常,默认为是,若为否,则会生成指定名称的分析器并返回
  • force_new_profiler (bool) – 是否强制使用新的分析器,默认为
返回:

时间分析器对象

返回类型:

LineProfiler

引发:

KeyError – 获取的键名不存在

moprofiler.memory_profiler(_function=None, name='', print_res=True, stream=None, precision=1, backend='psutil', force_new_profiler=False)[源代码]

内存分析器装饰器

参数:
  • _function (types.FunctionType or types.MethodType) – 被封装的对象,由解释器自动传入,不需关心
  • name (str) – 关键字参数,被装饰方法所使用的内存分析器名称,默认为使用被装饰方法的方法名
  • print_res (bool) – 是否在被装饰对象退出后立刻打印分析结果,默认为 True 。 当需要将多次调用结果聚集后输出时,可设为 False ,并通过 Mixin 中的 memory_profiler 进行结果输出
  • stream (object) – 输出方式,默认为 stdout ,可指定为文件
  • precision (int) – 精度,默认为 1
  • backend (str) – 内存监控的 backend ,默认为 ‘psutil’
  • force_new_profiler (bool) – 是否强制使用新的分析器,默认为
返回:

装饰后的函数或方法

返回类型:

types.FunctionType or types.MethodType

class moprofiler.MemoryProfilerMixin[源代码]

基类:moprofiler.base.ProfilerMixin

内存分析器 Mixin 类

用以提供复杂的内存分析功能,如:

  1. 针对需要多次调用的方法进行累加分析的场景
  2. 在一次代码执行流程中同时分析多个方法,并灵活控制分析结果的输出
classmethod memory_profiler(name, backend='psutil', raise_except=True, force_new_profiler=False)[源代码]

获取指定的内存分析器

参数:
  • name (str) – 指定的内存分析器名称
  • backend (str) – 内存分析器的处理后端
  • raise_except (bool) – 若不存在是否抛出异常,默认为是,若为否,则会生成指定名称的分析器并返回
  • force_new_profiler (bool) – 是否强制使用新的分析器,默认为
返回:

内存分析器对象

返回类型:

MemoryProfiler

引发:

KeyError – 获取的键名不存在

moprofiler.memory_profiler_getter(name, backend='psutil', raise_except=True, force_new_profiler=False)

闭包方法,获取内存分析器

参数:
  • name (str) – 指定的内存分析器名称
  • backend (str) – 内存分析器的处理后端
  • raise_except (bool) – 若不存在是否抛出异常,默认为是,若为否,则会生成指定名称的分析器并返回
  • force_new_profiler (bool) – 是否强制使用新的分析器,默认为
返回:

内存分析器对象

返回类型:

MemoryProfiler

引发:

KeyError – 获取的键名不存在

moprofiler.stopwatch(_function=None, print_args=False, logger=None, print_mem=False, fmt='', name='', logging_level=20, **dkwargs)[源代码]

返回秒表监控下的函数或方法

通过额外的关键字参数,支持配置自定义的值到输出模板中

日志输出模板中可使用变量如下:

  1. name : 当前秒表名称
  2. args : 被装饰函数/方法的位置参数
  3. kwargs : 被装饰函数/方法
  4. time_use : 函数/方法执行耗时
  5. mem_use : 函数/方法执行内存
参数:
  • _function (types.FunctionType or types.MethodType) – 被封装的对象,由解释器自动传入,不需关心
  • print_args (bool) – 是否打印被装饰函数的参数列表,若含有较长的参数,可能造成日志过长,开启时请注意
  • logger (logging.Logger) – 可传入指定的日志对象,便于统一输出样式,默认使用该模块中的全局 logger
  • print_mem (bool) – 是否在方法退出时打印内存信息,默认为 False
  • fmt (str) – 用于格式化输出的模板,可在了解所有内置参数变量后自行定制输出样式,若指定该参数则会忽略 print_args
  • name (str) – 关键字参数,被装饰方法代理生成的 stopwatch 所使用的名称,默认为使用被装饰方法的方法名
  • logging_level (int) – 打印日志的级别,默认为 INFO
返回:

装饰后的函数

返回类型:

types.FunctionType or types.MethodType

class moprofiler.StopwatchMixin[源代码]

基类:moprofiler.base.ProfilerMixin

秒表 Mixin 类

用以提供复杂的秒表功能,如:

  1. 针对需要多次调用的方法进行累加记录的场景
  2. 在一次代码执行流程中同时记录多个方法,并灵活控制记录结果的输出
classmethod _get_stopwatch(**kwds)[源代码]

获取秒表对象

参数:
  • self_or_cls (object) – 被代理的对象 or 类
  • callargs (dict) – 调用该上下文管理器时传入的所有调用参数
返回:

返回被代理的对象 or 类

返回类型:

Iterator[base.Proxy]