python代码性能分析cProfile、line_profiler

性能分析

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 :1()
        2    0.000    0.000    0.000    0.000 enum.py:289(_

你可能感兴趣的:(性能分析,python)