性能分析
1.cProfile
官方文档:https://docs.python.org/zh-cn/3.8/library/profile.html?highlight=cprofile#module-cProfile
说明:https://juejin.cn/post/6844903474250022919
cProfile是一种确定性分析器,只测量CPU时间,并不关心内存消耗和其他与内存相关联的信息
####django扩展库确实强大 django-cprofile-middleware-dmw
装饰器使用:
import cProfile
import pstats
import os
# 性能分析装饰器定义
def do_cprofile(filename):
"""
Decorator for function profiling.
"""
def wrapper(func):
def profiled_func(*args, **kwargs):
# Flag for do profiling or not.
DO_PROF = os.getenv("PROFILING")
if DO_PROF:
profile = cProfile.Profile()
profile.enable()
result = func(*args, **kwargs)
profile.disable()
# Sort stat by internal time.
sortby = "tottime"
ps = pstats.Stats(profile).sort_stats(sortby)
ps.dump_stats(filename)
else:
result = func(*args, **kwargs)
return result
return profiled_func
return wrapper
结果格式
99 function calls (98 primitive calls) in 0.001 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 <string>:1(<module>)
2 0.000 0.000 0.000 0.000 enum.py:289(_