亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python性能分析工具Profile

系統 1571 0

Python性能分析工具Profile

?

?

            
              代碼優化的前提是需要了解性能瓶頸在什么地方,程序運行的主要時間是消耗在哪里,對于比較復雜的代碼可以借助一些工具來定位,python 內置了豐富的性能分析工具,如 profile,cProfile 與 hotshot 等。其中 Profiler 是 python 自帶的一組程序,能夠描述程序運行時候的性能,并提供各種統計幫助用戶定位程序的性能瓶頸。Python 標準模塊提供三種 profilers:cProfile,profile 以及 hotshot。
profile 的使用非常簡單,只需要在使用之前進行 
            
            
              import
            
             即可,也可以在命令行中使用。
          

?

使用Profile

測試示例:

            
              import
            
            
               profile

            
            
              def
            
            
               a():
    sum 
            
            =
            
               0
    
            
            
              for
            
             i 
            
              in
            
             range(1, 10001
            
              ):
        sum 
            
            +=
            
               i
    
            
            
              return
            
            
               sum


            
            
              def
            
            
               b():
    sum 
            
            =
            
               0
    
            
            
              for
            
             i 
            
              in
            
             range(1, 100
            
              ):
        sum 
            
            +=
            
               a()
    
            
            
              return
            
            
               sum

            
            
              if
            
            
              __name__
            
             == 
            
              "
            
            
              __main__
            
            
              "
            
            
              :
   profile.run(
            
            
              "
            
            
              b()
            
            
              "
            
            )
          

輸出結果:

            
104 function calls in 0.094 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.094 0.094 :0(exec) 1 0.000 0.000 0.000 0.000 :0(setprofile) 1 0.000 0.000 0.094 0.094 :1( ) 1 0.000 0.000 0.094 0.094 profile:0(b()) 0 0.000 0.000 profile:0(profiler) 99 0.094 0.001 0.094 0.001 test.py:15(a) 1 0.000 0.000 0.094 0.094 test.py:21(b)

            其中輸出每列的具體解釋如下:

●ncalls:表示函數調用的次數;

●tottime:表示指定函數的總的運行時間,除掉函數中調用子函數的運行時間;

●percall:(第一個 percall)等于 tottime/ncalls;

●cumtime:表示該函數及其所有子函數的調用運行的時間,即函數開始調用到返回的時間;

●percall:(第二個 percall)即函數運行一次的平均時間,等于 cumtime/ncalls;

●filename:lineno(function):每個函數調用的具體信息;

如果需要將輸出以日志的形式保存,只需要在調用的時候加入另外一個參數。如 profile.run(“profileTest()”,”testprof”)。

          

?

?

命令行

如果我們不想在程序中調用profile庫使用,可以在命令行使用命令。

            
              import
            
            
               os


            
            
              def
            
            
               a():
    sum 
            
            =
            
               0
    
            
            
              for
            
             i 
            
              in
            
             range(1, 10001
            
              ):
        sum 
            
            +=
            
               i
    
            
            
              return
            
            
               sum


            
            
              def
            
            
               b():
    sum 
            
            =
            
               0
    
            
            
              for
            
             i 
            
              in
            
             range(1, 100
            
              ):
        sum 
            
            +=
            
               a()
    
            
            
              return
            
            
               sum


            
            
              print
            
             b()
          

?

運行命令查看性能分析結果

python -m cProfile test .py

?

將性能分析結果保存到result文件

python -m cProfile -o result test .py

?

使用pstats來格式化顯示結果

python - c "import pstats; p=pstats.Stats('reslut); p.print_stats()"

?

python - c "import pstats; p=pstats.Stats('result'); p.sort_stats('time').print_stats()

            sort_stats支持一下參數:

calls, cumulative, file, line, module, name, nfl, pcalls, stdname, time

          

?

?

測試示例:在代碼中直接使用profile與stats

            
              import
            
            
               os

            
            
              def
            
            
               a():
sum 
            
            =
            
               0

            
            
              for
            
             i 
            
              in
            
             range(1, 10001
            
              ):
sum 
            
            +=
            
               i

            
            
              return
            
            
               sum

            
            
              def
            
            
               b():
sum 
            
            =
            
               0

            
            
              for
            
             i 
            
              in
            
             range(1, 100
            
              ):
sum 
            
            +=
            
               a()

            
            
              return
            
            
               sum

            
            
              print
            
            
               b()

            
            
              import
            
            
               cProfile

            
            
              #
            
            
              cProfile.run("b()")
            
            
cProfile.run(
            
              "
            
            
              b()
            
            
              "
            
            , 
            
              "
            
            
              result
            
            
              "
            
            
              )

            
            
              import
            
            
               pstats
pstats.Stats(
            
            
              '
            
            
              result
            
            
              '
            
            ).sort_stats(-1).print_stats()
          

?

refence

https://blog.csdn.net/xiemanR/article/details/69398057

https://www.cnblogs.com/wangjian8888/p/6095772.html

https://blog.csdn.net/kongxx/article/details/52216850

http://ju.outofmemory.cn/entry/46805


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成人性生活免费看 | 欧美巨大xxxx做受孕妇视频 | 国产精品美女久久久久网站 | 色综合一本 | 一级毛片毛片毛片毛毛片 | 国产a毛片清高视频 | 久久93精品国产91久久综合 | 一级免费看 | 国产精品美女久久久久网 | 欧美在线一区二区三区精品 | 亚洲精品www | 日韩精品一区二区在线观看 | 亚洲五月婷婷 | 免费观看四虎精品国产永久 | 亚洲国产一区二区三区四区五区 | 夜夜骑日日| 狠狠综合久久综合网站 | 在线播放亚洲 | 日本一区二区三区久久 | 日韩欧一级毛片在线播无遮挡 | 欧美三级一区二区三区 | 免费播放美女一级毛片 | 午夜噜噜噜私人影院在线播放 | 日韩女人做爰大片 | 在线亚洲日产一区二区 | 伊人色综合久久天天伊 | 欧美三级aaa | 99久久精品免费看国产 | 亚洲 欧美 精品 中文第三 | 精品日本一区二区 | 2020国产精品视频免费 | 天天做天天添天天谢 | 亚洲精品中文字幕一区在线 | 亚洲第一区第二区 | 亚洲第一成人在线 | 午夜国产福利 | 奇米影视在线播放 | 久久精品中文字幕不卡一二区 | 国产麻豆精品高清在线播放 | 天天色播 | 免费精品在线视频 |