秒表工具模块¶
提供用于计时打点的秒表工具
-
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)[源代码]¶ 输出打点日志
会在打点时记录当前的时间&进程内存使用(若
memory
为True
),并将其与上次的打点记录做差, 分别获取时间差time_diff
、内存差memory_diff
,再将其与进入函数时的记录做差, 分别获取到时间差time_total
、内存差memory_total
。将以上四个变量传入
fmt
模板中格式化后输出到log
。 除上述变量外,您还可以使用装饰器参数中指定的变量。注意仅当
memory
为真时,才会记录日志情况,否则将直接跳过。日志输出模板中可使用变量如下:
idx
: 当前打点的序号,从 1 开始time_diff
: 距上次打点间的时间差time_total
: 距函数/方法开始时的时间差memory_diff
: 距上次打点(memory=True)间的内存差,跳过未记录内存的时间打点,直到函数/方法进入时的内存记录memory_total
: 距函数/方法开始时的内存差
参数:
-
-
class
moprofiler.stopwatch.
StopwatchMixin
[源代码]¶ 基类:
moprofiler.base.ProfilerMixin
秒表 Mixin 类
用以提供复杂的秒表功能,如:
- 针对需要多次调用的方法进行累加记录的场景
- 在一次代码执行流程中同时记录多个方法,并灵活控制记录结果的输出
-
moprofiler.stopwatch.
stopwatch
(_function=None, print_args=False, logger=None, print_mem=False, fmt='', name='', logging_level=20, **dkwargs)[源代码]¶ 返回秒表监控下的函数或方法
通过额外的关键字参数,支持配置自定义的值到输出模板中
日志输出模板中可使用变量如下:
name
: 当前秒表名称args
: 被装饰函数/方法的位置参数kwargs
: 被装饰函数/方法time_use
: 函数/方法执行耗时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