行分析作为后台服务运行的python代码

时间:2017-08-24 10:04:02

标签: python profiling

我知道使用kerprof / profile / cProfile分析独立脚本的方式。但是,如何配置作为后台服务/长时间运行的应用程序运行的python Web应用程序

1 个答案:

答案 0 :(得分:1)

经过深入研究并探索潜在的解决方案;我提出了以下解决方案:

  1. 将以下函数添加到源文件中并使用@do_cprofile修饰原始函数以进行概要分析

    import cProfile
    
    def do_cprofile(func):
        def profiled_func(*args, **kwargs):
            profile = cProfile.Profile()
            try:
                profile.enable()
                result = func(*args, **kwargs)
                profile.disable()
                return result
            finally:
                profile.dump_stats('/tmp/profile_bin.prof')
        return profiled_func
    
  2. 将生成的/tmp/profile_bin.prof转换为人类可读文件

    import pstats
    
    f = open('/tmp/human_readable_profile.prof', 'w')
    stats = pstats.Stats('/tmp/profile_bin.prof', stream=f)
    stats.sort_stats('cumulative').print_stats()
    f.close()