秒表工具模块

提供用于计时打点的秒表工具

class moprofiler.stopwatch.Stopwatch[源代码]

基类:object

秒表类

time_buf = None

用来存储计时打点时间

mem_buf = None

用来存储打点内存

name = None

秒表的名称,可在装饰时设置,默认为使用被装饰方法的方法名

dkwargs = None

用来存储最终输出时使用的变量

dotting_param_pre = None

用来记录上次打点输出时的参数信息

logger = None

用来日志输出的 logger

logging_level = None

日志输出级别

final_fmt = None

输出最终计时结果的字符串模板

is_print_memory = None

是否打印内存

wrap_generator(func, wrap_param)[源代码]

封装一个生成器从而使用秒表对其进行观察

参数:
  • func (types.FunctionType or types.MethodType) – 被封装的函数,由解释器自动传入,不需关心
  • wrap_param (dict) – 封装时传入的参数字典
返回:

封装后的方法

返回类型:

types.FunctionType or types.MethodType

wrap_function(func, wrap_param)[源代码]

封装一个函数从而使用秒表对其进行观察

参数:
  • func (types.FunctionType or types.MethodType) – 被封装的函数,由解释器自动传入,不需关心
  • wrap_param (dict) – 封装时传入的参数字典
返回:

封装后的方法

返回类型:

types.FunctionType or types.MethodType

dotting(fmt='', logging_level=None, memory=False, mute=False, **kwargs)[源代码]

输出打点日志

会在打点时记录当前的时间&进程内存使用(若 memoryTrue),并将其与上次的打点记录做差, 分别获取时间差 time_diff 、内存差 memory_diff ,再将其与进入函数时的记录做差, 分别获取到时间差 time_total 、内存差 memory_total

将以上四个变量传入 fmt 模板中格式化后输出到 log 。 除上述变量外,您还可以使用装饰器参数中指定的变量。

注意仅当 memory 为真时,才会记录日志情况,否则将直接跳过。

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

  1. idx : 当前打点的序号,从 1 开始
  2. time_diff : 距上次打点间的时间差
  3. time_total : 距函数/方法开始时的时间差
  4. memory_diff : 距上次打点(memory=True)间的内存差,跳过未记录内存的时间打点,直到函数/方法进入时的内存记录
  5. memory_total : 距函数/方法开始时的内存差
参数:
  • fmt (str) – 用来输出打点日志的格式化模板,需使用 format 的占位符格式
  • logging_level (int) – 日志输出级别,默认使用装饰当前方法时设置的级别,若无则使用类属性中定义的默认值
  • memory (bool) – 是否记录内存使用,默认为 False
  • mute (bool) – 静默打点,默认为 False ,若设为 True ,则当次仅记录时间/内存,不执行任何输出逻辑
class moprofiler.stopwatch.StopwatchMixin[源代码]

基类:moprofiler.base.ProfilerMixin

秒表 Mixin 类

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

  1. 针对需要多次调用的方法进行累加记录的场景
  2. 在一次代码执行流程中同时记录多个方法,并灵活控制记录结果的输出
moprofiler.stopwatch.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