精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python性能分析的技巧說明

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 15:16 ? 次閱讀

當我們開始精通編程語言時,我們不僅希望實現最終的編程目標,而且還希望可以使我們的程序更高效。在本文中,我們將學習一些Ipython的命令,這些命令可以幫助我們對Python代碼進行時間分析。注意,在本教程中,我建議使用Anaconda。1.分析一行代碼要檢查一行python代碼的執行時間,請使用**%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)主要注意事項:在要分析的代碼行之前使用%timeit它返回代碼運行的平均值和標準偏差。在上面的示例中,執行了7次,每次執行對該代碼循環100萬次(默認行為),這需要平均1.08微秒和43納秒的標準偏差。在調用magic命令時,可以自定義運行和循環的數量,示例如下:#### 在%timeit magic命令中自定義運行和循環數%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)使用命令選項-r和-n,分別表示執行次數和循環次數,我們將時間配置文件操作定制為執行5次和循環100次。2.分析多行代碼本節向前邁進了一步,并解釋了如何分析完整的代碼塊。通過對%timeit magic命令進行一個小的修改,將單百分比(%)替換為雙百分比(%%),就可以分析一個完整的代碼塊。以下為示例演示,供參考:#### 使用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循環的平均執行時間為10.5微秒。請注意,命令選項-r和-n分別用于控制執行次數和循環次數。3.代碼塊中的每一行代碼進行時間分析到目前為止,我們只在分析一行代碼或代碼塊時查看摘要統計信息,如果我們想評估代碼塊中每一行代碼的性能呢?使用Line_profiler 。Line_profiler 包可用于對任何函數執行逐行分析。要使用line_profiler軟件包,請執行以下步驟:安裝—Line_profiler 包可以通過簡單的調用pip或conda Install來安裝。如果使用的是針對Python的anaconda發行版,建議使用conda安裝#### 安裝line_profiler軟件包conda install line_profiler加載擴展—一旦安裝,你可以使用IPython來加載line_profiler:#### 加載line_profiler的Ipython擴展%load_ext line_profiler時間分析函數—加載后,使用以下語法對任何預定義函數進行時間分析%lprun -f function_name_only function_call_with_arguments語法細節:對line_profiler的調用以關鍵字%lprun開始,后跟命令選項-f命令選項之后是函數名,然后是函數調用在本練習中,我們將定義一個接受高度(以米為單位)和重量(以磅為單位)列表的函數,并將其分別轉換為厘米和千克。#### 定義函數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分析函數%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]輸出詳細信息:以14.6微秒為單位(參考第一行輸出)生成的表有6列:第1列(行#)—代碼的行號(請注意,第#1行是故意從輸出中省略的,因為它只是函數定義語句)第2列(命中)—調用該行的次數第3列(時間)—在代碼行上花費的時間單位數(每個時間單位為14.6微秒)第4列(每次命中平均時間)—第3列除以第2列第5列(%Time)—在所花費的總時間中,花在特定代碼行上的時間百分比是多少第6列(內容)—代碼行的內容你可以清楚地看到,高度從米到厘米的轉換幾乎占了總時間的72%。結束語利用每一行代碼的執行時間,我們可以部署策略來提高代碼的效率。

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

審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 可編程邏輯
    +關注

    關注

    7

    文章

    514

    瀏覽量

    44074
  • 性能分析
    +關注

    關注

    0

    文章

    10

    瀏覽量

    8024
  • python
    +關注

    關注

    56

    文章

    4783

    瀏覽量

    84473
收藏 人收藏

    評論

    相關推薦

    對比Python與Java編程語言

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

    使用Python進行圖像處理

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

    TPS22995H-Q1 濕度性能應用說明

    電子發燒友網站提供《TPS22995H-Q1 濕度性能應用說明.pdf》資料免費下載
    發表于 09-09 11:00 ?0次下載
    TPS22995H-Q1 濕度<b class='flag-5'>性能</b>應用<b class='flag-5'>說明</b>

    單片機STM32可以用Python寫嗎?可以的開發板有哪些?

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

    pytorch和python的關系是什么

    在當今的人工智能領域,Python已經成為了最受歡迎的編程語言之一。Python的易學易用、豐富的庫和框架以及強大的社區支持,使其成為了數據科學、機器學習和深度學習等領域的首選語言。而在深度學習領域
    的頭像 發表于 08-01 15:27 ?1740次閱讀

    Python建模算法與應用

    Python作為一種功能強大、免費、開源且面向對象的編程語言,在科學計算、數學建模、數據分析等領域展現出了卓越的性能。其簡潔的語法、對動態輸入的支持以及解釋性語言的本質,使得Python
    的頭像 發表于 07-24 10:41 ?470次閱讀

    Python在AI中的應用實例

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

    opencv-python和opencv一樣嗎

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

    網絡爬蟲,Python和數據分析

    電子發燒友網站提供《網絡爬蟲,Python和數據分析.pdf》資料免費下載
    發表于 07-13 09:27 ?1次下載

    用pycharm進行python爬蟲的步驟

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

    SAGE算法的性能分析

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

    基于Python的地圖繪制教程

    本文將介紹通過Python繪制地形圖的方法,所需第三方Python相關模塊包括 rasterio、geopandas、cartopy 等,可通過 pip 等方式安裝。
    的頭像 發表于 02-26 09:53 ?1125次閱讀
    基于<b class='flag-5'>Python</b>的地圖繪制教程

    如何使用linux下gdb來調試python程序

    如何使用linux下gdb來調試python程序? 在Linux下,可以使用GDB(GNU調試器)來調試Python程序。GDB是一個強大的調試工具,可以幫助開發者診斷和修復程序中的錯誤。在本文
    的頭像 發表于 01-31 10:41 ?2437次閱讀

    加速Python for循環的12種方法

    Python內建的一個常用功能是timeit模塊。下面幾節中我們將使用它來度量循環的當前性能和改進后的性能
    的頭像 發表于 01-04 17:33 ?1889次閱讀
    加速<b class='flag-5'>Python</b> for循環的12種方法

    配網行波故障預警與定位裝置的實地運行性能分析

    今天江蘇宇拓電力科技來為大家說明一下配網行波故障預警與定位裝置的實地運行性能分析
    的頭像 發表于 12-22 14:18 ?341次閱讀