最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中的腳本性能分析

 更新時(shí)間:2022年11月03日 10:58:26   作者:勤奮的大熊貓  
這篇文章主要介紹了python中的腳本性能分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

python腳本性能分析

首先使用cd進(jìn)入需要測(cè)試的腳本文件對(duì)應(yīng)的目錄,然后再使用如下代碼完成對(duì)腳本的性能測(cè)試。

# enter the directory of document
cd (file directory)
# use pdb library for debuging
python -m cProfile test.py

我們可以看到我們獲取到了每一步操作所需要的時(shí)間。

對(duì)于如何測(cè)試單行代碼運(yùn)行時(shí)間,可以看這篇python 代碼運(yùn)行時(shí)間獲取方式(超鏈接點(diǎn)擊跳轉(zhuǎn))。

python性能分析技巧

當(dāng)我們開始精通編程語(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)單的例子來了解它的工作原理:

#### 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)了一步,并解釋了如何分析完整的代碼塊。通過對(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 包可以通過簡(jiǎn)單的調(diào)用pip或conda Install來安裝。如果使用的是針對(duì)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í)間分析函數(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開始,后跟命令選項(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%。

利用每一行代碼的執(zhí)行時(shí)間,我們可以部署策略來提高代碼的效率。以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python 爬取英雄聯(lián)盟皮膚圖片

    python 爬取英雄聯(lián)盟皮膚圖片

    還記得那些年一起網(wǎng)吧開黑通宵的日子嗎?《英雄聯(lián)盟》絕對(duì)是大學(xué)時(shí)期的風(fēng)靡游戲,即使畢業(yè)多年的大學(xué)同學(xué)相聚,難免不懷念一番當(dāng)時(shí)一起玩《英雄聯(lián)盟》的日子。今天就給大家分享一下英雄及皮膚圖片的爬蟲。
    2021-05-05
  • 使用Python繪制詞云圖的詳細(xì)教程

    使用Python繪制詞云圖的詳細(xì)教程

    詞云(Word Cloud)是一種數(shù)據(jù)可視化技術(shù),用于顯示文本數(shù)據(jù)中的頻繁單詞,在本教程中,我們將使用 Python 的 wordcloud 庫(kù),結(jié)合 matplotlib 和 jieba 等工具,展示如何從文本數(shù)據(jù)生成詞云圖,需要的朋友可以參考下
    2025-01-01
  • 用Python實(shí)現(xiàn)zip密碼破解實(shí)例

    用Python實(shí)現(xiàn)zip密碼破解實(shí)例

    大家好,本篇文章主要講的是用Python實(shí)現(xiàn)zip密碼破解實(shí)例,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Python3中省略號(hào)(...)用法介紹

    Python3中省略號(hào)(...)用法介紹

    本文主要介紹了Python3中省略號(hào)(...)用法介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Pytorch基礎(chǔ)教程之torchserve模型部署解析

    Pytorch基礎(chǔ)教程之torchserve模型部署解析

    torchserve是基于netty網(wǎng)絡(luò)框架實(shí)現(xiàn)的,底層使用EpollServerSocketChannel服務(wù)進(jìn)行網(wǎng)絡(luò)通信,通過epoll多路復(fù)用技術(shù)實(shí)現(xiàn)高并發(fā)網(wǎng)絡(luò)連接處理,這篇文章主要介紹了Pytorch基礎(chǔ)教程之torchserve模型部署和推理,需要的朋友可以參考下
    2023-07-07
  • 運(yùn)行django項(xiàng)目指定IP和端口的方法

    運(yùn)行django項(xiàng)目指定IP和端口的方法

    今天小編就為大家分享一篇運(yùn)行django項(xiàng)目指定IP和端口的方法。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 詳解Python修復(fù)遙感影像條帶的兩種方式

    詳解Python修復(fù)遙感影像條帶的兩種方式

    這篇文章主要介紹了詳解Python修復(fù)遙感影像條帶的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Python?selenium下拉選擇框?qū)崙?zhàn)應(yīng)用例子

    Python?selenium下拉選擇框?qū)崙?zhàn)應(yīng)用例子

    Selenium是一個(gè)開源的和便攜式的自動(dòng)化軟件測(cè)試工具,用于測(cè)試Web應(yīng)用程序有能力在不同的瀏覽器和操作系統(tǒng)運(yùn)行,下面這篇文章主要給大家介紹了關(guān)于Python?selenium下拉選擇框?qū)崙?zhàn)應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Python簡(jiǎn)易圖形界面庫(kù)easygui對(duì)話框整理大全

    Python簡(jiǎn)易圖形界面庫(kù)easygui對(duì)話框整理大全

    這篇文章主要給大家介紹了關(guān)于Python簡(jiǎn)易圖形界面庫(kù)easygui對(duì)話框的相關(guān)資料,EasyGUI是一個(gè)用Python編寫的非常簡(jiǎn)易的GUI編程模塊,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • pycharm 取消默認(rèn)的右擊運(yùn)行unittest的方法

    pycharm 取消默認(rèn)的右擊運(yùn)行unittest的方法

    今天小編就為大家分享一篇pycharm 取消默認(rèn)的右擊運(yùn)行unittest的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11

最新評(píng)論

昆山市| 姜堰市| 安化县| 出国| 荥经县| 萝北县| 兰西县| 福建省| 无锡市| 阿城市| 凌海市| 南溪县| 彰化市| 双江| 会理县| 云南省| 阳江市| 肇东市| 常德市| 大石桥市| 宜州市| 楚雄市| 伊金霍洛旗| 乐安县| 峨山| 武宁县| 江北区| 嘉义县| 兰州市| 长沙县| 卢湾区| 崇阳县| 武穴市| 定远县| 永安市| 尚义县| 湟中县| 隆子县| 丁青县| 铜山县| 巴青县|