代码之家  ›  专栏  ›  技术社区  ›  Mayank

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

  •  0
  • Mayank  · 技术社区  · 7 年前

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Mayank    7 年前

    在深入研究和探索潜在解决方案后;我提出了以下解决方案:

    1. 将以下函数添加到源文件中,并用@do\u cprofile将原始函数修饰为profile

      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()