吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python性能分析的技巧說明

電子設(shè)計(jì) ? 來源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 15:16 ? 次閱讀

當(dāng)我們開始精通編程語言時,我們不僅希望實(shí)現(xiàn)最終的編程目標(biāo),而且還希望可以使我們的程序更高效。在本文中,我們將學(xué)習(xí)一些Ipython的命令,這些命令可以幫助我們對Python代碼進(jìn)行時間分析。注意,在本教程中,我建議使用Anaconda。1.分析一行代碼要檢查一行python代碼的執(zhí)行時間,請使用**%timeit**。下面是一個簡單的例子來了解它的工作原理:#### magics命令%timeit的簡單用法%timeit [num for num in range(20)]

#### 輸出1.08 ?s ± 43 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)主要注意事項(xiàng):在要分析的代碼行之前使用%timeit它返回代碼運(yùn)行的平均值和標(biāo)準(zhǔn)偏差。在上面的示例中,執(zhí)行了7次,每次執(zhí)行對該代碼循環(huán)100萬次(默認(rèn)行為),這需要平均1.08微秒和43納秒的標(biāo)準(zhǔn)偏差。在調(diào)用magic命令時,可以自定義運(yùn)行和循環(huán)的數(shù)量,示例如下:#### 在%timeit magic命令中自定義運(yùn)行和循環(huán)數(shù)%timeit -r5 -n100 [num for num in range(20)]
1.01 ?s ± 5.75 ns per loop (mean ± std. dev. of 5 runs, 100 loops each)使用命令選項(xiàng)-r和-n,分別表示執(zhí)行次數(shù)和循環(huán)次數(shù),我們將時間配置文件操作定制為執(zhí)行5次和循環(huán)100次。2.分析多行代碼本節(jié)向前邁進(jìn)了一步,并解釋了如何分析完整的代碼塊。通過對%timeit magic命令進(jìn)行一個小的修改,將單百分比(%)替換為雙百分比(%%),就可以分析一個完整的代碼塊。以下為示例演示,供參考:#### 使用timeblock%%代碼分析%%timeit -r5 -n1000for i in range(10): n = i**2 m = i**3 o = abs(i)
#### 輸出10.5 ?s ± 226 ns per loop (mean ± std. dev. of 5 runs, 1000 loops each)可以觀察到for循環(huán)的平均執(zhí)行時間為10.5微秒。請注意,命令選項(xiàng)-r和-n分別用于控制執(zhí)行次數(shù)和循環(huán)次數(shù)。3.代碼塊中的每一行代碼進(jìn)行時間分析到目前為止,我們只在分析一行代碼或代碼塊時查看摘要統(tǒng)計(jì)信息,如果我們想評估代碼塊中每一行代碼的性能呢?使用Line_profiler 。Line_profiler 包可用于對任何函數(shù)執(zhí)行逐行分析。要使用line_profiler軟件包,請執(zhí)行以下步驟:安裝—Line_profiler 包可以通過簡單的調(diào)用pip或conda Install來安裝。如果使用的是針對Python的anaconda發(fā)行版,建議使用conda安裝#### 安裝line_profiler軟件包c(diǎn)onda install line_profiler加載擴(kuò)展—一旦安裝,你可以使用IPython來加載line_profiler:#### 加載line_profiler的Ipython擴(kuò)展%load_ext line_profiler時間分析函數(shù)—加載后,使用以下語法對任何預(yù)定義函數(shù)進(jìn)行時間分析%lprun -f function_name_only function_call_with_arguments語法細(xì)節(jié):對line_profiler的調(diào)用以關(guān)鍵字%lprun開始,后跟命令選項(xiàng)-f命令選項(xiàng)之后是函數(shù)名,然后是函數(shù)調(diào)用在本練習(xí)中,我們將定義一個接受高度(以米為單位)和重量(以磅為單位)列表的函數(shù),并將其分別轉(zhuǎn)換為厘米和千克。#### 定義函數(shù)def conversion(ht_mtrs, wt_lbs ): ht_cms = [ht*100 for ht in ht_mtrs] wt_kgs = [wt*.4535 for wt in wt_lbs]
#### 定義高度和重量列表:ht = [5,5,4,7,6]wt = [108, 120, 110, 98]
#### 使用line_profiler分析函數(shù)%lprun -f conversion conversion(ht,wt)
---------------------------------------------------------------#### 輸出Total time: 1.46e-05 s
File: <ipython-input-13-41e195af43a9>
Function: conversion at line 2
Line # Hits Time Per Hit % Time Line Contents============================================================== 2 1 105.0 105.0 71.9 ht_cms = [ht*100 for ht in ht_mtrs] 3 1 41.0 41.0 28.1 wt_kgs = [wt*.4535 for wt in wt_lbs]輸出詳細(xì)信息:以14.6微秒為單位(參考第一行輸出)生成的表有6列:第1列(行#)—代碼的行號(請注意,第#1行是故意從輸出中省略的,因?yàn)樗皇呛瘮?shù)定義語句)第2列(命中)—調(diào)用該行的次數(shù)第3列(時間)—在代碼行上花費(fèi)的時間單位數(shù)(每個時間單位為14.6微秒)第4列(每次命中平均時間)—第3列除以第2列第5列(%Time)—在所花費(fèi)的總時間中,花在特定代碼行上的時間百分比是多少第6列(內(nèi)容)—代碼行的內(nèi)容你可以清楚地看到,高度從米到厘米的轉(zhuǎn)換幾乎占了總時間的72%。結(jié)束語利用每一行代碼的執(zhí)行時間,我們可以部署策略來提高代碼的效率。

希望這篇文章能給你提供幫助,你能學(xué)到一些新東西。

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    517

    瀏覽量

    44184
  • 性能分析
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    8046
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4807

    瀏覽量

    85040
收藏 人收藏

    評論

    相關(guān)推薦

    功率分析儀使用說明

    功率分析儀的使用說明主要包括安裝、設(shè)置、測量及數(shù)據(jù)分析等步驟,以下是詳細(xì)的使用指南:
    的頭像 發(fā)表于 01-28 14:55 ?103次閱讀

    Python Connector for InterBase連接解決方案

    ,以對存儲的數(shù)據(jù)執(zhí)行創(chuàng)建、讀取、更新和刪除操作。該解決方案完全符合 Python DB API 2.0 規(guī)范,并作為 Windows、macOS 和 Linux 的 wheel 包分發(fā)。 特征 高性能
    的頭像 發(fā)表于 01-22 14:34 ?106次閱讀

    使用Python實(shí)現(xiàn)xgboost教程

    使用Python實(shí)現(xiàn)XGBoost模型通常涉及以下幾個步驟:數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練、模型評估和模型預(yù)測。以下是一個詳細(xì)的教程,指導(dǎo)你如何在Python中使用XGBoost。 1. 安裝XGBoost
    的頭像 發(fā)表于 01-19 11:21 ?403次閱讀

    華為云 Flexus X 實(shí)例下的場景體驗(yàn)——小企業(yè)使用 Python 語言——超迅速搭建簡單公網(wǎng) API 接口服務(wù)

    ,希望本文可以對小企業(yè)來說有一定的幫助作用。 目錄 前言 環(huán)境說明 連接并安裝 Python 環(huán)境 Python Web 接口編碼 上傳 WebAPI 接口代碼 安裝 flask
    的頭像 發(fā)表于 12-27 13:46 ?169次閱讀
    華為云 Flexus X 實(shí)例下的場景體驗(yàn)——小企業(yè)使用 <b class='flag-5'>Python</b> 語言——超迅速搭建簡單公網(wǎng) API 接口服務(wù)

    對比Python與Java編程語言

    使得編寫代碼更加靈活,但也可能導(dǎo)致運(yùn)行時錯誤。 Java 語法相對冗長,需要顯式聲明變量類型,增加了代碼的可讀性和安全性。 靜態(tài)類型系統(tǒng)在編譯時進(jìn)行類型檢查,減少了運(yùn)行時錯誤。 二、性能 Python 解釋型語言,運(yùn)行速度通常比Java慢,但對于許多應(yīng)用場景
    的頭像 發(fā)表于 11-15 09:31 ?444次閱讀

    使用Python進(jìn)行圖像處理

    下面是一個關(guān)于使用Python在幾行代碼中分析城市輪廓線的快速教程。
    的頭像 發(fā)表于 11-07 10:14 ?280次閱讀
    使用<b class='flag-5'>Python</b>進(jìn)行圖像處理

    單片機(jī)STM32可以用Python寫嗎?可以的開發(fā)板有哪些?

    近年來,隨著嵌入式技術(shù)的發(fā)展,Python語言逐漸被引入到單片機(jī)開發(fā)中,尤其是一些高性能的單片機(jī)上。這一趨勢給開發(fā)者帶來了極大的便利,尤其是在快速原型設(shè)計(jì)和實(shí)驗(yàn)中。本文將詳細(xì)探討STM32單片機(jī)是否
    的頭像 發(fā)表于 09-05 08:00 ?4503次閱讀
    單片機(jī)STM32可以用<b class='flag-5'>Python</b>寫嗎?可以的開發(fā)板有哪些?

    pytorch和python的關(guān)系是什么

    在當(dāng)今的人工智能領(lǐng)域,Python已經(jīng)成為了最受歡迎的編程語言之一。Python的易學(xué)易用、豐富的庫和框架以及強(qiáng)大的社區(qū)支持,使其成為了數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等領(lǐng)域的首選語言。而在深度學(xué)習(xí)領(lǐng)域
    的頭像 發(fā)表于 08-01 15:27 ?2359次閱讀

    Python建模算法與應(yīng)用

    Python作為一種功能強(qiáng)大、免費(fèi)、開源且面向?qū)ο蟮木幊陶Z言,在科學(xué)計(jì)算、數(shù)學(xué)建模、數(shù)據(jù)分析等領(lǐng)域展現(xiàn)出了卓越的性能。其簡潔的語法、對動態(tài)輸入的支持以及解釋性語言的本質(zhì),使得Python
    的頭像 發(fā)表于 07-24 10:41 ?663次閱讀

    Python在AI中的應(yīng)用實(shí)例

    Python在人工智能(AI)領(lǐng)域的應(yīng)用極為廣泛且深入,從基礎(chǔ)的數(shù)據(jù)處理、模型訓(xùn)練到高級的應(yīng)用部署,Python都扮演著至關(guān)重要的角色。以下將詳細(xì)探討Python在AI中的幾個關(guān)鍵應(yīng)用實(shí)例,包括機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、自然語言處理、
    的頭像 發(fā)表于 07-19 17:16 ?1366次閱讀

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV-Python
    的頭像 發(fā)表于 07-16 10:38 ?1405次閱讀

    網(wǎng)絡(luò)爬蟲,Python和數(shù)據(jù)分析

    電子發(fā)燒友網(wǎng)站提供《網(wǎng)絡(luò)爬蟲,Python和數(shù)據(jù)分析.pdf》資料免費(fèi)下載
    發(fā)表于 07-13 09:27 ?2次下載

    用pycharm進(jìn)行python爬蟲的步驟

    以下是使用PyCharm進(jìn)行Python爬蟲的步驟: 安裝PyCharm和Python 首先,您需要安裝PyCharm和Python。PyCharm是一個流行的Python集成開發(fā)環(huán)境
    的頭像 發(fā)表于 07-11 10:11 ?954次閱讀

    SAGE算法的性能分析

    電子發(fā)燒友網(wǎng)站提供《SAGE算法的性能分析.pdf》資料免費(fèi)下載
    發(fā)表于 02-28 10:38 ?0次下載

    基于Python的地圖繪制教程

    本文將介紹通過Python繪制地形圖的方法,所需第三方Python相關(guān)模塊包括 rasterio、geopandas、cartopy 等,可通過 pip 等方式安裝。
    的頭像 發(fā)表于 02-26 09:53 ?1312次閱讀
    基于<b class='flag-5'>Python</b>的地圖繪制教程
    线上百家乐官网玩法| 网上现金游戏| 百家乐平台送彩金| 百家乐官网赌博规| 皇冠开户正网 | 欢乐谷百家乐的玩法技巧和规则| 蓝盾百家乐官网赌场娱乐网规则| 乐平市| 大发888手机版| 百家乐电话投注怎么玩| 百家乐官网赌博信息| 现金投注网| 百家乐论坛| 百家乐15人桌子| 百家乐官网赌场游戏平台| 白凤凰博彩通| 大发888娱乐场下载英皇国际| 百家乐视频二人雀神| 百家乐官网透视牌靴哪里有| 太白县| 老虎机在线ap888| 澳门百家乐走势图怎么看| 网页百家乐官网的玩法技巧和规则 | 百家乐官网的弱点| 百家乐官网游戏官网| 手机棋牌游戏下载| 澳门百家乐路单| 百家乐路单破解方法| 百家乐官网计算法| 真人百家乐官网在线玩| 棋牌游戏| 皇城百家乐娱乐城| 真人百家乐平台下载| 新花园百家乐官网的玩法技巧和规则| 百家乐官网怎么压对子| 八大胜| 大发888娱乐城哪个好| 百家乐稳赢秘诀教学| 百家乐庄河闲的赌法| 中原百家乐官网的玩法技巧和规则 | 广州百家乐官网桌子|