【发布时间】:2013-02-24 16:48:13
【问题描述】:
对于任何特定的代码,有没有一种方法可以轻松地获得每行执行时间的细分?
【问题讨论】:
标签: python performance
对于任何特定的代码,有没有一种方法可以轻松地获得每行执行时间的细分?
【问题讨论】:
标签: python performance
Python 代码不是按原样执行,您输入的程序被编译成经过优化的中间格式。因此,同一条线很可能会根据周围的线而花费不同的时间。此外,Python 对其数据有复杂的操作,操作所花费的时间将取决于处理的确切值。
【讨论】:
在 shell 中,您可以将 cProfile 模块作为脚本运行:
python -m cProfile nameofscriptfile.py
【讨论】:
import timeit
timeit.timeit("5+3")
【讨论】:
这是一种快速而肮脏的方法。
第 1 步。运行它并以秒为单位获得端到端的总体时间。如果它真的很快,请在它周围包裹一个临时的外循环,使其至少需要几秒钟。
第 2 步。获取一堆随机时间堆栈样本,as in this example。 如果运行时间很短,您可以多次运行。
您感兴趣的任何一行都会出现在部分样本上。 例如,如果它出现在 10 个样本中的 3 个上,这意味着在总时间的 30%(大约)期间,该语句正在执行。
【讨论】: