亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁(yè) > 知識(shí)庫(kù) > python如何做代碼性能分析

python如何做代碼性能分析

熱門標(biāo)簽:蘇州電銷機(jī)器人十大排行榜 悟空智電銷機(jī)器人6 遼寧400電話辦理多少錢 溫州旅游地圖標(biāo)注 荊州云電銷機(jī)器人供應(yīng)商 江蘇房產(chǎn)電銷機(jī)器人廠家 幫人做地圖標(biāo)注收費(fèi)算詐騙嗎 外呼不封號(hào)系統(tǒng) 電信營(yíng)業(yè)廳400電話申請(qǐng)

上一篇文章我們介紹了基準(zhǔn)測(cè)試,通過(guò)基準(zhǔn)測(cè)試可以發(fā)現(xiàn)程序變慢了,那么是因?yàn)槭裁丛驅(qū)е滦阅茏兟模枰M(jìn)一步做代碼性能分析。python同樣提供了性能分析工具。

cProfile

cProfile是python默認(rèn)的性能分析器,他只測(cè)量CPU時(shí)間,并不關(guān)心內(nèi)存消耗和其他與內(nèi)存相關(guān)聯(lián)的信息。

from time import sleep
import random


def random_list(start, end, length):
    """
    生成隨機(jī)列表
    :param start: 隨機(jī)開始數(shù)
    :param end: 隨機(jī)結(jié)束數(shù)
    :param length: 列表長(zhǎng)度
    """
    data_list = []
    for i in range(length):
        data_list.append(random.randint(start, end))
    return data_list


def bubble_sort(arr):
    """
    冒泡排序: 對(duì)列表進(jìn)行排序
    :param arr 列表
    """
    n = len(arr)
    sleep(1)
    for i in range(n):
        for j in range(0, n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr


if __name__ == '__main__':
    get_data_list = random_list(1, 99, 10)

    import cProfile
    cProfile.run('bubble_sort({})'.format(get_data_list))

繼續(xù)使用上一篇文章中的例子,引用cProfile模塊,run()方法參數(shù)說(shuō)明。

run(statement, filename=None, sort=-1)

  • statement: 需要測(cè)試的代碼或者函數(shù)(函數(shù)名)
  • fielname: 結(jié)果保存的位置, 默認(rèn)為stdout
  • sort: 結(jié)果排序方法,常用的有cumtime: 累積時(shí)間, name: 函數(shù)名, line: 行號(hào)

為了使結(jié)果統(tǒng)計(jì)出耗時(shí)部分,我們加了sleep,結(jié)果如下:

❯ python demo.py
         6 function calls in 1.004 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    1.004    1.004 string>:1(module>)
        1    0.000    0.000    1.004    1.004 demo.py:19(bubble_sort)
        1    0.000    0.000    1.004    1.004 {built-in method builtins.exec}
        1    0.000    0.000    0.000    0.000 {built-in method builtins.len}
        1    1.004    1.004    1.004    1.004 {built-in method time.sleep}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
  • 6 function calls in 1.004 seconds 6個(gè)函數(shù)調(diào)用被監(jiān)控,耗時(shí)1.004秒。
  • ncalls 函數(shù)被調(diào)用的次數(shù)。如果這一列有兩個(gè)值,就表示有遞歸調(diào)用,第二個(gè)值是原生調(diào)用次數(shù),第一個(gè)值是總調(diào)用次數(shù)。
  • tottime 函數(shù)內(nèi)部消耗的總時(shí)間。(可以幫助優(yōu)化)
  • percall 是tottime除以ncalls,一個(gè)函數(shù)每次調(diào)用平均消耗時(shí)間。
  • cumtime 之前所有子函數(shù)消費(fèi)時(shí)間的累計(jì)和。
  • filename:lineno(function) 被分析函數(shù)所在文件名、行號(hào)、函數(shù)名。

line_profiler

line_profiler 可以提供有關(guān)時(shí)間是如何在各行之間分配的信息,直白一點(diǎn)就是給出程序每行的耗時(shí),在無(wú)法確定哪行語(yǔ)句最浪費(fèi)時(shí)間,這很有用。

line_profiler是一個(gè)第三方模塊,需要安裝。

https://github.com/pyutils/line_profiler

from time import sleep
import random


def random_list(start, end, length):
    """
    生成隨機(jī)列表
    :param start: 隨機(jī)開始數(shù)
    :param end: 隨機(jī)結(jié)束數(shù)
    :param length: 列表長(zhǎng)度
    """
    data_list = []
    for i in range(length):
        data_list.append(random.randint(start, end))
    return data_list


@profile
def bubble_sort(arr):
    """
    冒泡排序: 對(duì)列表進(jìn)行排序
    :param arr 列表
    """
    n = len(arr)
    sleep(1)
    for i in range(n):
        for j in range(0, n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr


if __name__ == '__main__':
    get_data_list = random_list(1, 99, 10)
    bubble_sort(get_data_list)

給需要監(jiān)控的函數(shù)加上@profile 裝飾器。通過(guò)kernprof命令運(yùn)行文件(安裝完line_profiler生成的命令)。

參數(shù)說(shuō)明:

  • -l:以使用函數(shù)line_profiler
  • -v:以立即將結(jié)果打印到屏幕

運(yùn)行結(jié)果:

kernprof -l -v demo.py
Wrote profile results to demo.py.lprof
Timer unit: 1e-06 s

Total time: 1.00416 s
File: demo.py
Function: bubble_sort at line 18

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
    18                                           @profile
    19                                           def bubble_sort(arr):
    20                                               """
    21                                               冒泡排序: 對(duì)列表進(jìn)行排序
    22                                               :param arr 列表
    23                                               """
    24         1          8.0      8.0      0.0      n = len(arr)
    25         1    1004030.0 1004030.0    100.0      sleep(1)
    26        11         15.0      1.4      0.0      for i in range(n):
    27        55         44.0      0.8      0.0          for j in range(0, n - i - 1):
    28        45         41.0      0.9      0.0              if arr[j] > arr[j + 1]:
    29        20         21.0      1.1      0.0                  arr[j], arr[j + 1] = arr[j + 1], arr[j]
    30         1          1.0      1.0      0.0      return arr

輸出非常直觀,分成了6列。

  • Line #:運(yùn)行的代碼行號(hào)。
  • Hits:代碼行運(yùn)行的次數(shù)。
  • Time:代碼行的執(zhí)行時(shí)間,單位為微秒。
  • Per Hit:Time/Hits。
  • % Time:代碼行總執(zhí)行時(shí)間所占的百分比。
  • Line Contents:代碼行的內(nèi)容。

只需查看% Time列,就可清楚地知道時(shí)間都花在了什么地方。

總結(jié)

性能測(cè)試分析站在項(xiàng)目層面是一個(gè)很龐大的話題,以前為測(cè)試工程師,關(guān)注的是性能工具的使用,以及用戶維度的性能[1];作為開發(fā)工程師,每個(gè)功能都是由一個(gè)個(gè)函數(shù)/方法組成,我們?nèi)シ治雒總€(gè)函數(shù)/方法,甚至是每行代碼的耗時(shí),才能更好的進(jìn)行代碼層面的性能優(yōu)化。

以上就是python如何做代碼性能分析的詳細(xì)內(nèi)容,更多關(guān)于python 代碼性能分析的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python一些性能分析的技巧
  • Python性能分析工具py-spy原理用法解析
  • Python內(nèi)置類型性能分析過(guò)程實(shí)例
  • Python性能分析工具Profile使用實(shí)例
  • cProfile Python性能分析工具使用詳解
  • Python中判斷子串存在的性能比較及分析總結(jié)
  • 使用pycallgraph分析python代碼函數(shù)調(diào)用流程以及框架解析
  • Python爬蟲分析微博熱搜關(guān)鍵詞的實(shí)現(xiàn)代碼
  • 使用bandit對(duì)目標(biāo)python代碼進(jìn)行安全函數(shù)掃描的案例分析
  • python中delattr刪除對(duì)象方法的代碼分析
  • python3中確保枚舉值代碼分析

標(biāo)簽:三沙 喀什 濟(jì)南 黃山 欽州 宿遷 臺(tái)灣 景德鎮(zhèn)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python如何做代碼性能分析》,本文關(guān)鍵詞  python,如何,做,代碼,性能,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python如何做代碼性能分析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于python如何做代碼性能分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    色综合久久手机在线| 亚洲精品影院久久久久久| 日韩专区一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 天天做日日爱夜夜爽| 国产美女在线一区二区三区| 午夜欧美成人香蕉剧场| 国产网站免费视频| 日本在线www| 99色视频在线| 尤物视频网站在线| 国产极品精频在线观看| 亚洲天堂在线播放| 国产极品白嫩美女在线观看看| 午夜在线亚洲| 免费国产一级特黄aa大片在线| 国产一区二区高清视频| 国产伦精品一区三区视频| 欧美国产日韩在线| 国产精品自拍在线| 久久99中文字幕久久| 久久久久久久免费视频| 国产激情一区二区三区| 欧美日本免费| 九九久久国产精品大片| 国产国语在线播放视频| 国产麻豆精品高清在线播放| 九九久久99| 日本伦理网站| 国产一区二区精品久久| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 你懂的日韩| 久久99中文字幕久久| 99热视热频这里只有精品| 精品视频一区二区三区免费| 99色视频| 台湾美女古装一级毛片| 国产一区二区福利久久| 日韩中文字幕在线播放| 欧美大片a一级毛片视频| 99久久网站| 国产成人精品综合久久久| 97视频免费在线观看| 午夜激情视频在线播放| 国产视频一区在线| 国产成人啪精品| 国产一区二区高清视频| 亚洲 激情| 国产视频一区二区在线观看| 国产视频一区二区在线观看| 国产精品1024永久免费视频| 九九久久国产精品大片| 免费一级片网站| 久久99中文字幕| 四虎影视库| 免费国产一级特黄aa大片在线| 精品视频在线观看一区二区三区| 国产麻豆精品免费视频| 免费国产在线观看不卡| 色综合久久久久综合体桃花网| 可以在线看黄的网站| 99热精品在线| 91麻豆精品国产片在线观看| 国产不卡在线看| 日韩在线观看视频黄| 日韩在线观看视频免费| 国产伦久视频免费观看 视频| 一级毛片视频在线观看| 国产91精品一区| 人人干人人插| 天天色成人网| 精品在线观看国产| 欧美激情一区二区三区视频| 国产激情视频在线观看| 欧美激情一区二区三区视频 | a级毛片免费全部播放| a级黄色毛片免费播放视频| 日韩免费片| 91麻豆精品国产自产在线 | 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 午夜欧美成人香蕉剧场| 国产视频在线免费观看| 欧美爱色| 国产91素人搭讪系列天堂| 精品视频在线看 | 一级女性全黄久久生活片| 亚洲精品中文一区不卡| 国产亚洲精品aaa大片| 91麻豆精品国产高清在线| 成人a大片高清在线观看| 高清一级毛片一本到免费观看| 中文字幕97| 国产成人欧美一区二区三区的| 久久成人性色生活片| 久久国产一区二区| 欧美激情一区二区三区在线| 久久精品免视看国产成人2021| 99热热久久| 成人影院久久久久久影院| 可以免费看毛片的网站| 国产91视频网| 韩国毛片免费| 午夜精品国产自在现线拍| 色综合久久天天综合观看| 亚洲不卡一区二区三区在线| 国产91精品系列在线观看| 国产一区二区精品久| 韩国毛片 免费| 九九热精品免费观看| 成人av在线播放| 欧美另类videosbestsex| 亚州视频一区二区| 欧美电影免费看大全| 黄色免费三级| 国产视频一区在线| 九九免费高清在线观看视频| 99色视频在线| 精品久久久久久综合网| 午夜在线观看视频免费 成人| 免费的黄色小视频| 九九国产| 黄视频网站在线观看| 四虎影视库| 四虎久久精品国产| 日韩免费片| 午夜在线亚洲| 九九干| 国产一区二区精品久久| 日韩综合| 国产成人啪精品| 91麻豆爱豆果冻天美星空| 国产一区二区精品| 欧美一级视频免费观看| 亚洲精品中文一区不卡| 韩国三级一区| 国产成人精品综合在线| 国产一区精品| 香蕉视频久久| 精品国产一区二区三区久久久蜜臀| 亚洲精品久久久中文字| 99久久精品费精品国产一区二区| 九九热国产视频| 久久久成人网| 你懂的日韩| 中文字幕97| 九九久久国产精品大片| 日韩在线观看视频黄| 亚欧视频在线| 成人高清免费| 国产不卡精品一区二区三区| 九九九在线视频| 久久99这里只有精品国产| 欧美另类videosbestsex久久| 日本伦理片网站| 久久99中文字幕久久| 四虎影视库| 欧美爱爱动态| 精品视频免费观看| 韩国毛片免费大片| 日韩一级黄色| 美国一区二区三区| 99热热久久| 一级毛片看真人在线视频| 欧美大片一区| 欧美爱色| 亚洲第一页乱| 久久国产精品自线拍免费| 日韩综合| 成人免费福利片在线观看| 色综合久久天天综线观看| 亚洲第一视频在线播放| 欧美国产日韩在线| 国产不卡福利| 美女免费精品高清毛片在线视| 麻豆午夜视频| 日韩女人做爰大片| 日韩免费片| a级毛片免费观看网站| 国产激情一区二区三区| 亚洲天堂免费| 一级片片| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 黄色免费三级| a级黄色毛片免费播放视频| 欧美日本免费| 欧美18性精品| 精品视频免费观看| 精品视频在线观看一区二区三区| 欧美大片a一级毛片视频| 免费一级片网站| 国产欧美精品午夜在线播放| 国产福利免费视频| 国产视频一区二区在线观看| 91麻豆爱豆果冻天美星空| 亚洲第一视频在线播放| 日本在线不卡免费视频一区| 久久99这里只有精品国产| 日本伦理网站| 一本伊大人香蕉高清在线观看| 久久99中文字幕久久|