那曲檬骨新材料有限公司

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

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

3天內不再提示

Python 優化—算出每條語句執行時間

科技綠洲 ? 來源:Python數據科學 ? 作者:Python數據科學 ? 2023-11-03 11:01 ? 次閱讀

Python寫的程序,確實在性能上會比其他語言差一些,這是因為Python為了最大化 開發效率 ,犧牲了一定的 運行效率 。開發效率和運行效率往往是魚與熊掌不可兼得的關系。

不過,程序性能較差有很多原因,并不能全把鍋甩到Python身上,我們應該首先從自己的代碼上找原因,找原因最快的方法就是算出自己寫的語句或函數的 執行時間 。這時候,很多人都會選擇用以下的形式打印出語句的執行時間:

圖片

這是一種比較低效的做法,如果你有上萬條語句要測試,想用這個方法來找到瓶頸簡直是大海撈針。幸好,得益于Python強大的社區功能,我們有很多關于效率的模塊可以使用,今天要介紹的是 line_profiler , 它可以算出函數里每條語句的占用時間。

我們將使用上次電影人臉識別中的代碼進行講解:Python 識別電影中的人臉,不過要注意,這篇推送里的函數少傳遞了幾個參數,正確參數請點擊該推送下方的閱讀原文進行查看哦。

1.準備

Python環境當然是必備的,如果你還沒有安裝Python,可以看這篇文章:超詳細Python安裝指南

打開cmd/terminal輸入以下命令安裝line_profile:

pip install line_profiler

windows機器如果出現 Microsoft Visual C++ 14.0 is required 這樣的錯誤,請前往微軟官網,下載vs2015勾選"適用于visual C++2015的公共工具" 進行安裝。

如果出現:ModuleNotFoundError: No module named 'skbuild'的情況,請輸入以下命令安裝scikit-build:

pip install scikit-build

實在還是安裝不上的話 ,可以下載anaconda,輸入以下命令安裝:

conda install -c anaconda line_profiler

2.使用

使用方式非常簡單,比如原來我們在讀取人臉的代碼中,主函數是這樣的:

圖片

我們要測的是read_pic_save_face函數中所有語句的執行時間,只需要這樣調用line_profiler:

圖片

這樣就可以獲得該函數所有語句的執行時間報表。當然,它還有許多其他的調用方法,具體可以看line_profiler說明文檔: *
https://github.com/rkern/line_profiler*

3.閱讀報告

line_profiler報告包括幾個部分:

Line: 語句位于第幾行 **
Hits: 該行被執行的次數
Time: 該語句運行的總時間
Per Hit: 該語句運行一次的平均耗時
% Time: 該語句占總時間的比重**

圖片

可以看到,我們的這份代碼主要是在face_cascade.detectMultiScale 耗時最久,這是opencv的分類器執行效率問題。知道了是這里的效率問題,優化就有一個目標了。

這一部分的優化,我們可以從硬件方面入手,讓OpenCV在GPU上運行算法,這樣做性能將遠超在CPU上運行的性能,這是絕招。其次就是利用多線程計算(沒試過,不確定是否有用,或許下次可以試一下)。

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

    關注

    7

    文章

    2731

    瀏覽量

    47744
  • 程序
    +關注

    關注

    117

    文章

    3795

    瀏覽量

    81401
  • 代碼
    +關注

    關注

    30

    文章

    4825

    瀏覽量

    69035
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85036
收藏 人收藏

    評論

    相關推薦

    基于KEIL軟件的C語言編程,如何計算一段程序的執行時間呢?

    如題,一段程序執行時間怎樣確定,假如是把每條語句執行時間累加,那么每條語句
    發表于 01-18 06:10

    如何計算AURIX微控制器指令執行時間

    對于 AURIX TC38x,在數據表中,最大 CPU 頻率為 300MHz,如下所示- 因此,在此頻率下,每條指令的執行時間將為:1/300 MHz = 3.33 ns。 這種理解正確嗎? 否則,如何計算每條指令的
    發表于 01-23 08:08

    嵌套循環執行時間計算

    假如兩層循環都要執行16369次,那么執行時間如何計算呢?當然里面不添加任何操作,里面的執行時間是最短,不過這樣的意義不大。如果里面僅僅是一個賦值操作呢?int i =90
    發表于 12-30 15:24

    請問C2000中尋址結構體或者共同體需要的執行時間長嗎?

    ].bit.ORDER = i; //其中DCA_L是局部的共同體變量想請問下:這個語句相對于普通變量的賦值語句執行時間要長很多嗎?為什么呢?如果我想減少執行時間,能做什么改進?比如
    發表于 06-14 03:04

    如何計算執行時間

    嗨,大家好,有沒有方法計算程序或程序的一部分(在兩個斷點之間)的執行時間?比如秒表之類的?我希望任何人都能幫上忙!搶劫 以上來自于百度翻譯 以下為原文Hi all, Is there a way
    發表于 07-29 08:07

    如何使用CYCLECOUNTER快速的測量執行時間

    系統基于該寄存器實現了一個64位的循環周期計數器CYCLECOUNTER,能夠精確的測量程序的執行時間,并且可以與C-SPY宏結合,成為開發人員非常有用的一個工具。CYCLECOUNTER的顯示在IAR
    發表于 01-08 13:40

    如何在MCU上測量代碼執行時間

    期限(deadline)要求。測量部分代碼的實際執行時間可以幫助我們找到代碼中的時間關鍵點。本文將展示如何輕松測量和顯示基于Cortex-M MCU的代碼片段的執行時間。測量執行時間
    發表于 07-16 09:59

    RT1052執行時間

    最近測試了下RT1052 的if判斷語句執行時間。變量和0比較,用時在4ms。變量和其他非0數比較,用時8ms左右。這個正常么?各位道友。
    發表于 08-11 09:58

    RTThread Studio該如何查看代碼執行時間

    想要查看代碼執行時間,RTThread Studio下面應該如何操作?如何適應RTThread Studio查看某一段代碼的執行時間
    發表于 09-20 14:30

    MPC5744p如何優化程序執行時間?

    作為 MPC5744p 的新手,我遇到了一個關于如何優化程序執行時間的問題。 這是我的中斷服務例程中代碼行的圖片。 ↓這張圖片顯示了執行我測試過的代碼行之前的定時器值 ↓這張圖片顯示了執行
    發表于 06-05 12:50

    如何測量ARM Cortex-M MCU代碼的執行時間

    期限(deadline)要求。測量部分代碼的實際執行時間可以幫助我們找到代碼中的時間關鍵點。 本文將展示如何輕松測量和顯示基于Cortex-M MCU的代碼片段的執行時間。 測量執行時間
    的頭像 發表于 08-26 09:20 ?3742次閱讀
    如何測量ARM Cortex-M MCU代碼的<b class='flag-5'>執行時間</b>

    MCU上的代碼執行時間

    編寫的,而且開發人員常常被迫對代碼進行手工優化,可能會回到匯編語言,以滿足性能的需求。測量代碼部分的實際執行時間可以幫助找到代碼中的熱點。本文將說明如何可以方便地測量和顯示在基于Cortex-M MCU的...
    發表于 10-28 13:36 ?12次下載
    MCU上的代碼<b class='flag-5'>執行時間</b>

    可以節省Python執行時間的四種方式

    今天我想和大家分享 4 個省時的 Python 技巧,可以節省 10~20% 的 Python 執行時間
    的頭像 發表于 05-13 17:01 ?2772次閱讀

    使用STM32定時器測量程序執行時間的方法詳解

    在單片機的固件開發過程中,有的時候需要評估固件代碼的執行性能,會對部分關鍵程序代碼的執行時間進行測量。通常會用到的測量程序執行時間的方法是使用示波器進行測量。一般步驟是借助單片機的某一個GPIO口
    的頭像 發表于 01-17 15:11 ?8609次閱讀
    使用STM32定時器測量程序<b class='flag-5'>執行時間</b>的方法詳解

    TPT19新特性之最壞情況執行時間的指示

    在TPT 19中,首次有了最壞情況執行時間的早期預警系統——這已經在本地主機上用于測試執行。 ? 基本原則:對每個測試步驟的執行時間進行測量。這使您可以快速輕松地確定哪些測試和哪些條件會影響本地
    的頭像 發表于 04-27 10:08 ?518次閱讀
    TPT19新特性之最壞情況<b class='flag-5'>執行時間</b>的指示
    百家乐论坛博彩啦| 网上百家乐官网辅助软件| bet365备用主页器| 大发888的微博| bet365贴吧| 海立方娱乐| 百家乐官网天下第一缆| 百家乐官网开户送8彩金| 百家乐官网在线娱乐平台| 百家乐官网大路小路三珠路| 联合百家乐官网的玩法技巧和规则 | 百家乐诀| 大发888-娱乐网| 尊龙备用网址| 肥东县| 赌博百家乐官网弱点| 万龙百家乐官网的玩法技巧和规则| 康莱德百家乐官网的玩法技巧和规则| 百家乐闲庄概率| 哪个百家乐网站信誉好| 大发888娱乐城真钱lm0| 麻栗坡县| 免佣百家乐官网的玩法| 百家乐视频连线| 逍遥坊百家乐的玩法技巧和规则| 百家乐博彩策略论坛| 立即博百家乐娱乐城| 大发888娱乐城 手机版| 真钱梭哈| 什么事百家乐官网的路单| 澳门百家乐打缆| 百家乐家| 册亨县| 百家乐官网变牌桌| 百家乐庄闲出现几率| 大发888代充值存款| 游戏| 自贡百家乐官网赌| 红宝石百家乐的玩法技巧和规则 | 百家乐官网真人荷官| 永利百家乐官网赌场娱乐网规则 |