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

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

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

加快運(yùn)行Python速度的五種技巧

如意 ? 來(lái)源:Python學(xué)會(huì) ? 作者:Huangwei AI ? 2021-01-04 17:14 ? 次閱讀

前言

我們都知道就速度而言,Python是比Java或C慢得多的語(yǔ)言。Python是動(dòng)態(tài)類(lèi)型化的語(yǔ)言,這意味著它的變量類(lèi)型未預(yù)定義。動(dòng)態(tài)類(lèi)型是一把雙刃劍,它成就了Python成為一種優(yōu)雅的語(yǔ)言,同時(shí)也讓Python運(yùn)行速度減慢。讓我們看看一些可能對(duì)您的整體代碼性能產(chǎn)生重大影響的小技巧。

1. 了解你的內(nèi)置函數(shù)

這一技巧有助于節(jié)省您的時(shí)間和時(shí)間與您的代碼。當(dāng)我開(kāi)始學(xué)習(xí)Python的時(shí)候,我以前從不使用內(nèi)置函數(shù),所以為了完成我的絕對(duì)值代碼,我會(huì)運(yùn)行一個(gè)for循環(huán)而不是使用abs()。為了把一個(gè)字符轉(zhuǎn)換成大寫(xiě)字母,我甚至?xí)阉D(zhuǎn)換成與大寫(xiě)字母等價(jià)的ASCII字符,因?yàn)槲揖芙^學(xué)習(xí)字符串函數(shù)。

如果你對(duì)Python是認(rèn)真的,那么學(xué)習(xí)所有的Python內(nèi)置函數(shù)是值得的,因?yàn)樗粌H使你的代碼更整潔、更可重用,你還可以通過(guò)簡(jiǎn)單地使用Python提供給你的東西來(lái)避免代碼中人為的低效率。

2. A,B=B,A

我確信您以前使用過(guò)“temp”作為占位符變量來(lái)交換兩個(gè)元素。我能告訴你的是,這個(gè)方法只在課堂上使用,不應(yīng)該在編程時(shí)使用。

相反,可以通過(guò)將變量寫(xiě)成a,b = b,a 來(lái)進(jìn)行簡(jiǎn)單的變量交換。這將在一行中切換所有變量,并防止解釋器超過(guò)三個(gè)(temp, a,b交換方法)。

這是一個(gè)小小的修復(fù),可以節(jié)省幾分之一秒的時(shí)間——但從長(zhǎng)遠(yuǎn)來(lái)看,這些時(shí)間會(huì)累積起來(lái)。

3. 只在函數(shù)內(nèi)導(dǎo)入

作為一個(gè)初學(xué)者,我們都喜歡大量導(dǎo)入我們認(rèn)為在代碼頂部需要的所有東西。我記得有一次我導(dǎo)入了NumPy, Pandas, Scipy, Warnings, Math, Math, Os等等,當(dāng)我完成我的代碼時(shí),我只使用了三個(gè)庫(kù)。這會(huì)耗盡你電腦的內(nèi)存。

相反,在相應(yīng)的函數(shù)中導(dǎo)入所需的庫(kù)(如果多個(gè)函數(shù)需要相同的庫(kù),則需要多次導(dǎo)入)。這意味著解釋器只會(huì)在你調(diào)用函數(shù)時(shí)完成導(dǎo)入,而不是在代碼的開(kāi)頭。現(xiàn)在Python庫(kù)被緩存了,所以當(dāng)你調(diào)用不同的函數(shù)時(shí),它不會(huì)在每次導(dǎo)入時(shí)占用額外的時(shí)間。然而,當(dāng)您最終導(dǎo)入頂部的所有內(nèi)容,甚至不使用代碼中的一些函數(shù)時(shí),它確實(shí)會(huì)占用更多的時(shí)間。

4. 使用Numba

這是一個(gè)小眾技巧,主要幫助使用NumPy或科學(xué)編程的人。Numba是一個(gè)Python JIT編譯器,它對(duì)函數(shù)應(yīng)用裝飾器,將一些函數(shù)轉(zhuǎn)換為超快的字節(jié)代碼(幾乎與C一樣快)。Numba開(kāi)始因其簡(jiǎn)單和龐大的功能而出名。

Numba目前也支持其他功能,但是,我認(rèn)為它目前主要是為科學(xué)Python開(kāi)發(fā)人員提供的。

5. 從集合中檢查,而不是從列表中

這是Python優(yōu)化書(shū)中最古老的技巧之一。如果存在元素,不要在列表中搜索。相反,將列表設(shè)置為set(set(list)),然后執(zhí)行檢查“element in set(list)”。這個(gè)小小的改變將提高您的運(yùn)行時(shí)效率,因?yàn)镻ython使用了可調(diào)整大小的哈希表,將平均時(shí)間復(fù)雜度提高到了O(1)。

然而,遍歷集合并不比遍歷列表快。
責(zé)編AJX

聲明:本文內(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)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4333

    瀏覽量

    62696
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2945

    瀏覽量

    66778
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84756
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    安徽順豐與中原快運(yùn)簽約,共筑B2B物流合作新標(biāo)桿

    近日,順豐集團(tuán)傳來(lái)喜訊,安徽順豐與中原快運(yùn)在合肥正式簽署了合作協(xié)議。此次簽約標(biāo)志著雙方在B2B、F2B等物流領(lǐng)域的深入合作即將全面展開(kāi),共同致力于構(gòu)建一個(gè)更加綜合、高效的物流服務(wù)體系。 簽約儀式上
    的頭像 發(fā)表于 12-16 10:31 ?286次閱讀

    對(duì)比Python與Java編程語(yǔ)言

    使得編寫(xiě)代碼更加靈活,但也可能導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。 Java 語(yǔ)法相對(duì)冗長(zhǎng),需要顯式聲明變量類(lèi)型,增加了代碼的可讀性和安全性。 靜態(tài)類(lèi)型系統(tǒng)在編譯時(shí)進(jìn)行類(lèi)型檢查,減少了運(yùn)行時(shí)錯(cuò)誤。 二、性能 Python 解釋型語(yǔ)言,
    的頭像 發(fā)表于 11-15 09:31 ?336次閱讀

    LMK05318在TICS Pro中怎樣設(shè)置,可以加快同步的速度,實(shí)現(xiàn)幾分鐘之內(nèi)相位同步?

    同步可能需要數(shù)小時(shí)。請(qǐng)問(wèn)在TICS Pro中怎樣設(shè)置,可以加快同步的速度,實(shí)現(xiàn)幾分鐘之內(nèi)相位同步?可以接受同步過(guò)程中輸出頻率的偏差,但要求相位快速同步。附件是我這次的使用的配置文件,請(qǐng)問(wèn)這樣的配置是否有問(wèn)題?
    發(fā)表于 11-12 06:46

    AM625SIP處理器如何透過(guò)整合LPDDR4,加快開(kāi)發(fā)速度

    電子發(fā)燒友網(wǎng)站提供《AM625SIP處理器如何透過(guò)整合LPDDR4,加快開(kāi)發(fā)速度.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 10:47 ?0次下載
    AM625SIP處理器如何透過(guò)整合LPDDR4,<b class='flag-5'>加快</b>開(kāi)發(fā)<b class='flag-5'>速度</b>

    晶閘管導(dǎo)通的情況

    晶閘管作為一重要的電力電子器件,其導(dǎo)通狀態(tài)受多種因素影響。以下是晶閘管導(dǎo)通的詳細(xì)情況,每種情況都結(jié)合了晶閘管的工作原理、結(jié)構(gòu)特性及外部條件進(jìn)行闡述。
    的頭像 發(fā)表于 08-27 16:25 ?2327次閱讀

    使用labview調(diào)用python運(yùn)行一段時(shí)間后,報(bào)錯(cuò)

    使用labview調(diào)用python運(yùn)行一段時(shí)間后,報(bào)錯(cuò)。 labview版本:2018*64; python:3.6x64 怎么解決~
    發(fā)表于 08-26 10:16

    pytorch和python的關(guān)系是什么

    ,PyTorch已經(jīng)成為了一個(gè)非常受歡迎的框架。本文將介紹PyTorch和Python之間的關(guān)系,以及它們?cè)谏疃葘W(xué)習(xí)領(lǐng)域的應(yīng)用。 Python簡(jiǎn)介 Python是一高級(jí)、解釋型、通用
    的頭像 發(fā)表于 08-01 15:27 ?2015次閱讀

    Python建模算法與應(yīng)用

    Python作為一功能強(qiáng)大、免費(fèi)、開(kāi)源且面向?qū)ο蟮木幊陶Z(yǔ)言,在科學(xué)計(jì)算、數(shù)學(xué)建模、數(shù)據(jù)分析等領(lǐng)域展現(xiàn)出了卓越的性能。其簡(jiǎn)潔的語(yǔ)法、對(duì)動(dòng)態(tài)輸入的支持以及解釋性語(yǔ)言的本質(zhì),使得Python在多個(gè)平臺(tái)
    的頭像 發(fā)表于 07-24 10:41 ?569次閱讀

    安裝esp-idf-tools-setup-offline-5.1.2.exe到結(jié)尾運(yùn)行python時(shí)顯示應(yīng)用程序無(wú)法正常啟動(dòng)如何解決?

    安裝esp-idf-tools-setup-offline-5.1.2.exe到結(jié)尾運(yùn)行python時(shí)顯示應(yīng)用程序無(wú)法正常啟動(dòng)(0xc000007b),如何解決
    發(fā)表于 07-24 07:50

    ubuntu下(python ver 2.7.6)運(yùn)行python demo_server.py后無(wú)反應(yīng)怎么解決?

    python ver 2.7.6)運(yùn)行python demo_server.py后無(wú)反應(yīng) 請(qǐng)問(wèn)該如何正確運(yùn)行此腳本?
    發(fā)表于 07-22 08:20

    如何實(shí)現(xiàn)Python復(fù)制文件操作

    Python 中有許多“開(kāi)蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會(huì)看到一些用 Python 實(shí)現(xiàn)文件復(fù)制的特殊方法。下面我們開(kāi)始學(xué)習(xí)這九不同的方法來(lái)實(shí)現(xiàn)
    的頭像 發(fā)表于 07-18 14:53 ?431次閱讀

    編譯ESP-AT工程,運(yùn)行python build.py install命令提示符遇到的疑問(wèn)求解

    你好,我按照“編譯 ESP-AT 工程”步驟操作時(shí)候,走到第三步:安裝環(huán)境,運(yùn)行python build.py install命令提示符,顯示 C
    發(fā)表于 06-27 06:05

    esp32c3是否能在40mhz運(yùn)行,功耗是多少?

    和esp8266 80ma左右?esp32c3是否能在40mhz運(yùn)行,功耗是多少? 2:esp32c3連接wifi和tcp服務(wù)器速度能否加快,esp8266 速度在5-7s左右,esp
    發(fā)表于 06-20 06:17

    SOLIDWORKS教育版使學(xué)生了解如何加快設(shè)計(jì)項(xiàng)目的速度

    在當(dāng)今信息爆炸的時(shí)代,設(shè)計(jì)項(xiàng)目的速度和效率對(duì)于工程專(zhuān)業(yè)的學(xué)生來(lái)說(shuō)至關(guān)重要。SOLIDWORKS教育版作為一款專(zhuān)門(mén)為學(xué)生設(shè)計(jì)的3D CAD軟件,不僅提供了強(qiáng)大的設(shè)計(jì)工具,更致力于幫助學(xué)生了解如何加快設(shè)計(jì)項(xiàng)目的速度,提升他們的設(shè)計(jì)能
    的頭像 發(fā)表于 04-09 16:00 ?335次閱讀

    stm32h743是不是可以直接用ICache加快一些速度?

    stm32h743是不是可以直接用ICache加快一些速度,而不用DCache,DCache配置ram麻煩?
    發(fā)表于 03-08 08:01