分析简单的python脚本

Posted

技术标签:

【中文标题】分析简单的python脚本【英文标题】:profiling simple python script 【发布时间】:2018-03-26 17:56:19 【问题描述】:

我正在尝试使用cProfile 来分析 python 应用程序。所以我编写了一个简单的脚本,下面是我得到的结果。

def foo():
  for i in range(100000):
    print i

def bar():
  for i in range(100):
    print "bar"*i

foo()
bar()

当我以python -m profile script.py 运行上述脚本时,我得到以下输出:

         7 function calls in 0.136 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        2    0.000    0.000    0.000    0.000 :0(range)
        1    0.000    0.000    0.000    0.000 :0(setprofile)
        1    0.000    0.000    0.136    0.136 lip.py:1(<module>)
        1    0.136    0.136    0.136    0.136 lip.py:1(foo)
        1    0.000    0.000    0.000    0.000 lip.py:5(bar)
        1    0.000    0.000    0.136    0.136 profile:0(<code object <module> at 0x7fae5a978a30, file "lip.py", line 1>)
        0    0.000             0.000          profile:0(profiler)

但从输出看来,似乎只有方法 foo 消耗 0.136 秒 来执行,而方法 bar 的执行时间为 0.00 秒。这是为什么呢?

【问题讨论】:

【参考方案1】:

您在 foo 中所做的工作是在 bar 中的 1000 倍。

假设它们具有相同的速度,0.136 / 1000 = 0.000136 对于这个显示来说这个数字太小了,bar() 的时间正好四舍五入到 0.00

【讨论】:

以上是关于分析简单的python脚本的主要内容,如果未能解决你的问题,请参考以下文章

Python脚本的编写过程(例子--备份文件)

Python脚本分析CPU使用情况

从 shell 环境分析 Python 脚本

基于binlog来分析mysql的行记录修改情况(python脚本分析)

python脚本分析nginx访问日志

写一个简单的python脚本来返回ip地址的掩码,子网个数等