91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

Python性能分析的技巧說(shuō)明

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 15:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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

    文章

    527

    瀏覽量

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

    關(guān)注

    0

    文章

    12

    瀏覽量

    8266
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4877

    瀏覽量

    90113
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    沒(méi)有專(zhuān)利的opencv-python 版本

    所有 官方發(fā)布的 opencv-python 核心版本(無(wú) contrib 擴(kuò)展)都無(wú)專(zhuān)利風(fēng)險(xiǎn)——專(zhuān)利問(wèn)題僅存在于 opencv-contrib-python 擴(kuò)展模塊中的少數(shù)算法(如早期 SIFT
    發(fā)表于 12-13 12:37

    Termux中調(diào)試圣誕樹(shù)Python代碼

    python --version 如果輸出Python 3.x.x(比如3.11.4),說(shuō)明安裝成功。 二、代碼編寫(xiě)(兩種方式可選) 方式1:用Termux自帶編輯器(nano)(新手推薦) 創(chuàng)建并編輯
    發(fā)表于 12-09 09:02

    一文了解Mojo編程語(yǔ)言

    ,利用硬件加速提升效率。 科學(xué)計(jì)算與數(shù)據(jù)處理 高效處理大規(guī)模數(shù)值分析、基因組學(xué)數(shù)據(jù)等任務(wù)。 系統(tǒng)工具開(kāi)發(fā) 開(kāi)發(fā)操作系統(tǒng)級(jí)工具,結(jié)合 Python 的便捷性和 C 的性能優(yōu)勢(shì)。 嵌入式與實(shí)時(shí)應(yīng)用 適用于
    發(fā)表于 11-07 05:59

    termux調(diào)試python猜數(shù)字游戲

    用termux做一個(gè)猜數(shù)字游戲 下面是在Termux中創(chuàng)建猜數(shù)字游戲的步驟及完整實(shí)現(xiàn)方案,結(jié)合Python實(shí)現(xiàn)(最適配Termux環(huán)境): ? 一、環(huán)境準(zhǔn)備(Termux基礎(chǔ)配置) 1.
    發(fā)表于 08-29 17:15

    termux如何搭建python游戲

    termux如何搭建python游戲 Termux搭建Python游戲開(kāi)發(fā)環(huán)境的完整指南 一、Termux基礎(chǔ)環(huán)境準(zhǔn)備 Termux是一款無(wú)需root即可在安卓設(shè)備上運(yùn)行的Linux終端
    發(fā)表于 08-29 07:06

    python app不能運(yùn)行怎么解決?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    發(fā)表于 08-06 06:27

    C++ 與 Python:樹(shù)莓派上哪種語(yǔ)言更優(yōu)?

    Python是樹(shù)莓派上的首選編程語(yǔ)言,我們的大部分教程都使用它。然而,C++在物聯(lián)網(wǎng)項(xiàng)目中同樣廣受歡迎且功能強(qiáng)大。那么,在樹(shù)莓派項(xiàng)目中選擇哪種語(yǔ)言更合適呢?Python因其簡(jiǎn)潔性、豐富的庫(kù)和資源而被
    的頭像 發(fā)表于 07-24 15:32 ?970次閱讀
    C++ 與 <b class='flag-5'>Python</b>:樹(shù)莓派上哪種語(yǔ)言更優(yōu)?

    如何評(píng)估協(xié)議分析儀的性能指標(biāo)?

    評(píng)估協(xié)議分析儀的性能指標(biāo)需從硬件處理能力、協(xié)議解析精度、實(shí)時(shí)響應(yīng)效率、擴(kuò)展性與兼容性、用戶(hù)體驗(yàn)五大維度綜合考量。以下是具體指標(biāo)及評(píng)估方法,結(jié)合實(shí)際場(chǎng)景說(shuō)明其重要性:一、硬件處理能力:決定基礎(chǔ)
    發(fā)表于 07-18 14:44

    目前Mirco Python sdk觸摸到底支持什么驅(qū)動(dòng)啊 ?

    目前的Mirco Python sdk觸摸到底支持什么驅(qū)動(dòng)啊 能不能有資料詳細(xì)說(shuō)明 GT911 觸摸驅(qū)動(dòng)是否支持啊
    發(fā)表于 06-24 07:02

    同步電機(jī)步進(jìn)運(yùn)動(dòng)性能分析

    對(duì)同步電動(dòng)機(jī)采用步進(jìn)控制,模擬仿真該動(dòng)態(tài)下電機(jī)各種參數(shù)對(duì)性能的影響,同時(shí)提出如何選取初值和確定合適的參數(shù)。 純分享帖,需要者可點(diǎn)擊附件免費(fèi)獲取完整資料~~~*附件:同步電機(jī)步進(jìn)運(yùn)動(dòng)性能分析.pdf【免責(zé)
    發(fā)表于 06-20 17:38

    混合勵(lì)磁永磁發(fā)電機(jī)的設(shè)計(jì)與性能分析

    純分享帖,需要者可點(diǎn)擊附件免費(fèi)獲取完整資料~~~*附件:混合勵(lì)磁永磁發(fā)電機(jī)的設(shè)計(jì)與性能分析.pdf【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)第一時(shí)間告知,刪除內(nèi)容!
    發(fā)表于 05-29 14:10

    性能飆升!使用Python并行計(jì)算榨干樹(shù)莓派算力!

    甚至微型服務(wù)器時(shí),你是否也遇到過(guò)程序卡頓、視頻處理延遲的尷尬?今天我們就手把手教你用Python并行處理技術(shù),讓樹(shù)莓派的性能瞬間翻倍!歡迎在評(píng)論區(qū)曬出你的優(yōu)化方案,
    的頭像 發(fā)表于 03-26 17:08 ?946次閱讀
    讓<b class='flag-5'>性能</b>飆升!使用<b class='flag-5'>Python</b>并行計(jì)算榨干樹(shù)莓派算力!

    永磁體磁角度偏差對(duì)電機(jī)性能影響的分析

    、諧波、齒槽轉(zhuǎn)矩的影響進(jìn)行分析,對(duì)高精度、高功率密度電機(jī)的研究開(kāi)發(fā)以及生產(chǎn)過(guò)程中保持產(chǎn)品質(zhì)量的一致性有一定積極意義。 點(diǎn)擊附件查看全文*附件:永磁體磁角度偏差對(duì)電機(jī)性能影響的分析.pdf
    發(fā)表于 03-25 15:37

    ?如何在虛擬環(huán)境中使用 Python,提升你的開(kāi)發(fā)體驗(yàn)~

    RaspberryPiOS預(yù)裝了Python,你需要使用其虛擬環(huán)境來(lái)安裝包。今天出版的最新一期《TheMagPi》雜志刊登了我們文檔負(fù)責(zé)人NateContino撰寫(xiě)的一篇實(shí)用教程,幫助你入門(mén)
    的頭像 發(fā)表于 03-25 09:34 ?824次閱讀
    ?如何在虛擬環(huán)境中使用 <b class='flag-5'>Python</b>,提升你的開(kāi)發(fā)體驗(yàn)~

    零基礎(chǔ)入門(mén):如何在樹(shù)莓派上編寫(xiě)和運(yùn)行Python程序?

    在這篇文章中,我將為你簡(jiǎn)要介紹Python程序是什么、Python程序可以用來(lái)做什么,以及如何在RaspberryPi上編寫(xiě)和運(yùn)行一個(gè)簡(jiǎn)單的Python程序。什么是Python程序?
    的頭像 發(fā)表于 03-25 09:27 ?2076次閱讀
    零基礎(chǔ)入門(mén):如何在樹(shù)莓派上編寫(xiě)和運(yùn)行<b class='flag-5'>Python</b>程序?