window安装
https://www.lfd.uci.edu/~gohlke/pythonlibs/#line_profiler
pip install line_profiler.whl
pip install wrapt
wrapt 是一个功能非常完善的包,用于实现各种你想到或者你没想到的装饰器。使用wrapt实现的装饰器你不需要担心之前inspect中遇到的所有问题,因为它都帮你处理了,甚至inspect.getsource(func)也准确无误。
装饰器实现
utils.py
import wrapt
from line_profiler import LineProfiler
lp = LineProfiler()
def lp_wrapper():
"""
显示函数调用时间
"""
@wrapt.decorator
def wrapper(func, instance, args, kwargs):
global lp
lp_wrapper = lp(func)
res = lp_wrapper(*args, **kwargs)
lp.print_stats()
return res
return wrapper
使用
# 引入刚刚写的装饰器
from .utils import lp_wrapper
# 在函数前加入一行装饰器代码
@lp_wrapper()
def func():
"""
要查看的函数例子
"""
a = sum([1, 2, 3])
b = sum([1, 2, 3])
return sum([a, b])