在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

Python 優(yōu)化—算出每條語(yǔ)句執(zhí)行時(shí)間

科技綠洲 ? 來(lái)源:Python數(shù)據(jù)科學(xué) ? 作者:Python數(shù)據(jù)科學(xué) ? 2023-11-03 11:01 ? 次閱讀

Python寫的程序,確實(shí)在性能上會(huì)比其他語(yǔ)言差一些,這是因?yàn)镻ython為了最大化 開發(fā)效率 ,犧牲了一定的 運(yùn)行效率 。開發(fā)效率和運(yùn)行效率往往是魚與熊掌不可兼得的關(guān)系。

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

圖片

這是一種比較低效的做法,如果你有上萬(wàn)條語(yǔ)句要測(cè)試,想用這個(gè)方法來(lái)找到瓶頸簡(jiǎn)直是大海撈針。幸好,得益于Python強(qiáng)大的社區(qū)功能,我們有很多關(guān)于效率的模塊可以使用,今天要介紹的是 line_profiler , 它可以算出函數(shù)里每條語(yǔ)句的占用時(shí)間。

我們將使用上次電影人臉識(shí)別中的代碼進(jìn)行講解:Python 識(shí)別電影中的人臉,不過(guò)要注意,這篇推送里的函數(shù)少傳遞了幾個(gè)參數(shù),正確參數(shù)請(qǐng)點(diǎn)擊該推送下方的閱讀原文進(jìn)行查看哦。

1.準(zhǔn)備

Python環(huán)境當(dāng)然是必備的,如果你還沒有安裝Python,可以看這篇文章:超詳細(xì)Python安裝指南

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

pip install line_profiler

windows機(jī)器如果出現(xiàn) Microsoft Visual C++ 14.0 is required 這樣的錯(cuò)誤,請(qǐng)前往微軟官網(wǎng),下載vs2015勾選"適用于visual C++2015的公共工具" 進(jìn)行安裝。

如果出現(xiàn):ModuleNotFoundError: No module named 'skbuild'的情況,請(qǐng)輸入以下命令安裝scikit-build:

pip install scikit-build

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

conda install -c anaconda line_profiler

2.使用

使用方式非常簡(jiǎn)單,比如原來(lái)我們?cè)谧x取人臉的代碼中,主函數(shù)是這樣的:

圖片

我們要測(cè)的是read_pic_save_face函數(shù)中所有語(yǔ)句的執(zhí)行時(shí)間,只需要這樣調(diào)用line_profiler:

圖片

這樣就可以獲得該函數(shù)所有語(yǔ)句的執(zhí)行時(shí)間報(bào)表。當(dāng)然,它還有許多其他的調(diào)用方法,具體可以看line_profiler說(shuō)明文檔: *
https://github.com/rkern/line_profiler*

3.閱讀報(bào)告

line_profiler報(bào)告包括幾個(gè)部分:

Line: 語(yǔ)句位于第幾行 **
Hits: 該行被執(zhí)行的次數(shù)
Time: 該語(yǔ)句運(yùn)行的總時(shí)間
Per Hit: 該語(yǔ)句運(yùn)行一次的平均耗時(shí)
% Time: 該語(yǔ)句占總時(shí)間的比重**

圖片

可以看到,我們的這份代碼主要是在face_cascade.detectMultiScale 耗時(shí)最久,這是opencv的分類器執(zhí)行效率問(wèn)題。知道了是這里的效率問(wèn)題,優(yōu)化就有一個(gè)目標(biāo)了。

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

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

    關(guān)注

    7

    文章

    2783

    瀏覽量

    49630
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3824

    瀏覽量

    82447
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4888

    瀏覽量

    70272
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4825

    瀏覽量

    86223
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于KEIL軟件的C語(yǔ)言編程,如何計(jì)算一段程序的執(zhí)行時(shí)間呢?

    如題,一段程序執(zhí)行時(shí)間怎樣確定,假如是把每條語(yǔ)句執(zhí)行時(shí)間累加,那么每條語(yǔ)句
    發(fā)表于 01-18 06:10

    如何計(jì)算AURIX微控制器指令執(zhí)行時(shí)間

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

    嵌套循環(huán)執(zhí)行時(shí)間計(jì)算

    假如兩層循環(huán)都要執(zhí)行16369次,那么執(zhí)行時(shí)間如何計(jì)算呢?當(dāng)然里面不添加任何操作,里面的執(zhí)行時(shí)間是最短,不過(guò)這樣的意義不大。如果里面僅僅是一個(gè)賦值操作呢?int i =90
    發(fā)表于 12-30 15:24

    請(qǐng)問(wèn)C2000中尋址結(jié)構(gòu)體或者共同體需要的執(zhí)行時(shí)間長(zhǎng)嗎?

    ].bit.ORDER = i; //其中DCA_L是局部的共同體變量想請(qǐng)問(wèn)下:這個(gè)語(yǔ)句相對(duì)于普通變量的賦值語(yǔ)句執(zhí)行時(shí)間要長(zhǎng)很多嗎?為什么呢?如果我想減少執(zhí)行時(shí)間,能做什么改進(jìn)?比如
    發(fā)表于 06-14 03:04

    如何計(jì)算執(zhí)行時(shí)間

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

    如何使用CYCLECOUNTER快速的測(cè)量執(zhí)行時(shí)間

    系統(tǒng)基于該寄存器實(shí)現(xiàn)了一個(gè)64位的循環(huán)周期計(jì)數(shù)器CYCLECOUNTER,能夠精確的測(cè)量程序的執(zhí)行時(shí)間,并且可以與C-SPY宏結(jié)合,成為開發(fā)人員非常有用的一個(gè)工具。CYCLECOUNTER的顯示在IAR
    發(fā)表于 01-08 13:40

    如何在MCU上測(cè)量代碼執(zhí)行時(shí)間

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

    RT1052執(zhí)行時(shí)間

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

    RTThread Studio該如何查看代碼執(zhí)行時(shí)間

    想要查看代碼執(zhí)行時(shí)間,RTThread Studio下面應(yīng)該如何操作?如何適應(yīng)RTThread Studio查看某一段代碼的執(zhí)行時(shí)間
    發(fā)表于 09-20 14:30

    MPC5744p如何優(yōu)化程序執(zhí)行時(shí)間?

    作為 MPC5744p 的新手,我遇到了一個(gè)關(guān)于如何優(yōu)化程序執(zhí)行時(shí)間的問(wèn)題。 這是我的中斷服務(wù)例程中代碼行的圖片。 ↓這張圖片顯示了執(zhí)行我測(cè)試過(guò)的代碼行之前的定時(shí)器值 ↓這張圖片顯示了執(zhí)行
    發(fā)表于 06-05 12:50

    如何測(cè)量ARM Cortex-M MCU代碼的執(zhí)行時(shí)間

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

    MCU上的代碼執(zhí)行時(shí)間

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

    可以節(jié)省Python執(zhí)行時(shí)間的四種方式

    今天我想和大家分享 4 個(gè)省時(shí)的 Python 技巧,可以節(jié)省 10~20% 的 Python 執(zhí)行時(shí)間
    的頭像 發(fā)表于 05-13 17:01 ?3044次閱讀

    使用STM32定時(shí)器測(cè)量程序執(zhí)行時(shí)間的方法詳解

    在單片機(jī)的固件開發(fā)過(guò)程中,有的時(shí)候需要評(píng)估固件代碼的執(zhí)行性能,會(huì)對(duì)部分關(guān)鍵程序代碼的執(zhí)行時(shí)間進(jìn)行測(cè)量。通常會(huì)用到的測(cè)量程序執(zhí)行時(shí)間的方法是使用示波器進(jìn)行測(cè)量。一般步驟是借助單片機(jī)的某一個(gè)GPIO口
    的頭像 發(fā)表于 01-17 15:11 ?9547次閱讀
    使用STM32定時(shí)器測(cè)量程序<b class='flag-5'>執(zhí)行時(shí)間</b>的方法詳解

    TPT19新特性之最壞情況執(zhí)行時(shí)間的指示

    在TPT 19中,首次有了最壞情況執(zhí)行時(shí)間的早期預(yù)警系統(tǒng)——這已經(jīng)在本地主機(jī)上用于測(cè)試執(zhí)行。 ? 基本原則:對(duì)每個(gè)測(cè)試步驟的執(zhí)行時(shí)間進(jìn)行測(cè)量。這使您可以快速輕松地確定哪些測(cè)試和哪些條件會(huì)影響本地
    的頭像 發(fā)表于 04-27 10:08 ?681次閱讀
    TPT19新特性之最壞情況<b class='flag-5'>執(zhí)行時(shí)間</b>的指示
    主站蜘蛛池模板: 国产一区二区三区夜色 | 国产精品欧美激情第一页 | 夜夜夜爽bbbb性视频 | 永久国产 | 加勒比一本一道在线 | 在线capcom超级碰碰 | 国产2021成人精品 | 污污的网站免费阅读 | 久久福利精品 | 五月婷婷综合基地 | 婷婷sese| 午夜在线看片 | 国产一区二区中文字幕 | 欧美一区二区三区视频在线观看 | 国产精品网址你懂的 | 在线播放91灌醉迷j高跟美女 | 久久国产精品99久久久久久老狼 | 久久综合九色欧美综合狠狠 | 日本三级香港三级人妇99 | 又黄又爽的成人免费网站 | 男人的天堂在线免费视频 | 欧美黄网站 | 日本一区免费观看 | 国产精品护士 | 美女视频很黄很暴黄是免费的 | 日韩美a一级毛片 | 老司机精品免费视频 | japan日韩xxxx69hd jdav视频在线观看 | 国产精品夜色7777青苹果 | 狠狠一区| 国产激烈床戏无遮挡观看 | 在线免费影视 | 97色在线视频观看香蕉 | 色先锋av资源中文字幕 | 精品久久久久久中文字幕欧美 | 日本黄色片段 | 精品久久久久久 | 亚洲毛片网站 | 免费永久欧美性色xo影院 | 黄色网一级片 | 人人澡人人澡碰人人看软件 |