【问题标题】:How can I find out, where my program spends most of its time? [duplicate]我怎样才能知道我的程序大部分时间都花在了哪里? [复制]
【发布时间】:2020-06-05 01:13:02
【问题描述】:

给定一个有很多功能的程序,我怎样才能知道每个功能花费了多少时间?

例如,跟踪一个函数的执行时间非常简单,这篇文章中列出了 27 种可能的解决方案,here

但是,对已经存在的项目进行明智的扩展以在一次执行期间跟踪其所有功能的时间是什么?总运行时间可能是几个小时,因此了解是否有需要改进的地方可能非常有趣/有启发性。

【问题讨论】:

  • 您的链接已损坏。你想要的是line_profiler
  • 比如those工具之一?
  • 非常感谢,我会研究一下这些工具。他们看起来很有希望。

标签: python performance optimization time


【解决方案1】:

如果您尚未尝试使用内置分析器,请参阅: https://docs.python.org/3/library/profile.html

如果你有,但那不是你需要的,你可以在每个函数上使用一个装饰器来报告在那个函数中花费的时间。一个很好的例子是: https://codereview.stackexchange.com/questions/169870/decorator-to-measure-execution-time-of-a-function

【讨论】:

    【解决方案2】:

    尝试为每个函数添加一个装饰器来检查每个函数的执行时间:

    from functools import wraps
    from time import time
    
    def timing(f):
        @wraps(f)
        def wrap(*args, **kw):
            ts = time()
            result = f(*args, **kw)
            te = time()
            print 'func:%r args:[%r, %r] took: %2.4f sec' % \
              (f.__name__, args, kw, te-ts)
            return result
        return wrap
    
    @timing
    your_func()
    

    【讨论】:

      猜你喜欢
      • 2018-08-30
      • 2021-04-30
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多