利用PyCharm的Profile工具進行Python效能分析
Profile:
PyCharm提供了效能分析工具Run-》Profile,如下圖所示。利用Profile工具可以對程式碼進行效能分析,找出瓶頸所在。
測試:
下面以一段測試程式碼來說明如何使用pycharm的Profile功能。
測試程式碼見下文,檔案命名為Test.py, 一共有5個函式,每個函式都呼叫了time.sleep進行延時,其中fun5函式呼叫了fun4函式:
import time def fun1(a, b): print('fun1') print(a, b) time.sleep(1) def fun2(): print('fun2') time.sleep(1) deffun3(): print('fun3') time.sleep(2) def fun4(): print('fun4') time.sleep(1) def fun5(): print('fun5') time.sleep(1) fun4() fun1('foo', 'bar') fun2() fun3() fun5()
點選Run-》Profile開始測試,程式碼執行結束後會生成一欄測試結果,測試結果由兩部分構成,Statistcs(效能統計)和Call Graph(呼叫關係圖):
Statistcs(效能統計):
效能統計介面由Name、Call Count、Time(ms)、Own Time(ms) 4列組成一個表格,見下圖。
1. 表頭Name顯示被呼叫的模組或者函式;Call Count顯示被呼叫的次數;Time(ms)顯示執行時間和時間百分比,時間單位為毫秒(ms)。
2.點選表頭上的小三角可以升序或降序排列表格。
3.在Name這一個列中雙擊某一行可以跳轉到對應的程式碼。
4.以fun4這一行舉例:fun4被呼叫了一次,執行時間為1000ms,佔整個執行時間的16.7%
Call Graph(呼叫關係圖):
Call Graph(呼叫關係圖)介面直觀展示了各函式直接的呼叫關係、執行時間和時間百分比,見下圖。
0.右上角的4個按鈕表示放大、縮小、真實大小、合適大小;
1.箭頭表示呼叫關係,由呼叫者指向被呼叫者;
2.矩形的左上角顯示模組或者函式的名稱,右上角顯示被呼叫的次數;
3.矩形中間顯示執行時間和時間百分比;
4.矩形的顏色表示執行時間或者時間百分比大小的趨勢:紅色 > 黃綠色 > 綠色,由圖可以看出fun3的矩形為黃綠色,fun1為綠色,所有fun3執行時間比fun1長。
5.從圖中可以看出Test.py直接呼叫了fun3、fun1、fun2和fun5函式;fun5函式直接呼叫了fun4函式;fun1、fun2、fun3、fun4和fun5都直接呼叫了print以及sleep函式;整個測試程式碼執行的總時間為6006ms,其中fun3的執行時間為1999ms,所佔的時間百分比為33.3%,也就是 1999ms / 6006ms = 33.3%。
--------------------- 本文來自 xiemanR 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/xiemanR/article/details/69398057?utm_source=copy