测量运行时python中每行花费的时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测量运行时python中每行花费的时间相关的知识,希望对你有一定的参考价值。

是否有任何工具可以测量在运行时执行时在每行代码上花费的时间,并显示结果的一些可视化,以帮助开发人员了解哪些行在执行中最耗时?

我对python这样的工具感兴趣,我正在研究pycharm。

答案

你可以使用timeit,那;

测量小代码片段的执行时间

import timeit
start_time = timeit.default_timer()
# the line of code you want to  measure the time for
elapsed = timeit.default_timer() - start_time

import timeit
start_time = timeit.default_timer()
a = 5 + 2 / 1
b = a + 2
elapsed = timeit.default_timer() - start_time
print"Time taken: ", elapsed

OUTPUT:

timetaken

另一答案

来自优步的PyFlame会适合你的目的吗?

Pyflame是一个高性能的分析工具,可以为Python生成火焰图。 Pyflame在C ++中实现,并使用Linux ptrace(2)系统调用来收集分析信息。它可以在没有显式检测的情况下获取Python调用堆栈的快照,这意味着您可以在不修改其源代码的情况下分析程序。 Pyflame能够分析像uWSGI这样的嵌入式Python解释器。它完全支持分析多线程Python程序。

另一答案

我认为你所要求的是一种打印每一行的经过时间的方法,这是非常低效和困难的(并且是不必要的)。您不必计算像这样的行所用的时间

foo = 1

话虽这么说,你可以把计时器放在你怀疑你的代码很慢的地方。 pip上有用的模块是pytictoc

pytictoc包含一个类TicToc,它复制了MATLAB的tic和toc的功能,可以轻松地对代码段进行定时。在引擎盖下,pytictoc使用Python的timeit模块中的default_timer函数。

from pytictoc import TicToc
t.tic() #Start timer
# some of your codes here, e.g.
for ii in range(1000):
    pass
t.toc() #Time elapsed since t.tic()

经过的时间是1.35742秒。

以上是关于测量运行时python中每行花费的时间的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法测量这个算法解决这个 Soduku 拼图所花费的时间?

Python测量时间,用time.time还是time.clock

TPM 是不是也在运行时进行测量?

是否有一种生产安全的方法来测量使用 Python 在生产中花费的时间?

python测量代码运行时间方法

如何测量代码片段的调用次数和经过时间