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

时间:2019-01-03 05:36:53

标签: python pycharm

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

我为python这样的工具而着迷,而我正在开发pycharm。

4 个答案:

答案 0 :(得分:0)

您可以使用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

输出:

timetaken

答案 1 :(得分:0)

Uber的PyFlame是否适合您的目的?

  

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

答案 2 :(得分:0)

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

这样的行所花费的时间
foo = 1

话虽如此,您可以在怀疑代码运行缓慢的地方放置一个计时器。 pytictocpip上可用的有用模块。

  

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秒。

答案 3 :(得分:0)

import time

def elapsed_time(start, end):
    hours, rem = divmod(end-start, 3600)
    minutes, seconds = divmod(rem, 60)
    print("Elapsed Time: {:0>2}:{:0>2}:{:05.2f}"
                .format(int(hours),int(minutes),seconds))

#Test

start = time.time()
# your routine

end = time.time()

elapsed_time(start, end)