<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          干貨技巧!不需要任何工具,10個(gè)案例讓Python執(zhí)行速度飛速提升

          共 2268字,需瀏覽 5分鐘

           ·

          2021-04-03 20:14

          對(duì)于Python程序來說,雖然程序編寫簡單,容易上手,但是相比于C++、Java等編程語言,Python程序的運(yùn)行速度卻沒有優(yōu)勢(shì)。

          雖然有很多的第三方庫可以幫助提升Python的運(yùn)行速度,但是使用起來非常的麻煩。今天,小編想從程序編寫的角度,來提升程序的運(yùn)行速度。


          1.巧妙的利用Python的數(shù)據(jù)類型

          在Python程序中,對(duì)于list列表進(jìn)行 for i in list1的操作時(shí),其時(shí)間復(fù)雜度為O(n),而對(duì)于set進(jìn)行for i in set1的操作,時(shí)間復(fù)雜度為O(1)。所以在程序的執(zhí)行時(shí)間上,就會(huì)出現(xiàn)非常大的差距。


          2.利用迭代器來替代列表

          利用迭代器來代替列表,已經(jīng)逐漸的成為了Python編程者使用的一種方法,利用迭代器的操作,不僅可以節(jié)省時(shí)間,更重要的是可以節(jié)省大量的內(nèi)存空間,上圖中,利用列表的操作需要占用大約8M的內(nèi)存,但是迭代器只需要88個(gè)字節(jié)。


          3.利用局部變量代替全局變量

          上圖程序中,全局的變量z放入到函數(shù)myFunc中,局部變量的執(zhí)行時(shí)間要小于全局變量,因此程序執(zhí)行的時(shí)間也大大的縮短。


          4.避免“點(diǎn)”操作

          上圖中可以看到,calculateSqrtWithDot函數(shù)和calculateSqrt函數(shù)唯一的區(qū)別在于是否通過點(diǎn)操作來調(diào)用sqrt函數(shù)。每當(dāng)我們點(diǎn)操作來調(diào)用函數(shù)時(shí),就會(huì)觸發(fā)特定的方法,例如,__getattribute__() 和__getattr__(),這樣的方法會(huì)調(diào)用字典操作,從而帶來時(shí)間的消耗,因此在程序調(diào)用第三方庫時(shí)候,可以盡量使用from xx import xx的方法來進(jìn)行調(diào)用。


          5.避免不必要的類抽象

          在類中,盡量不要去使用裝飾器,描述符等操作來包裝程序,這會(huì)給程序的運(yùn)行帶來負(fù)擔(dān),所以如果沒有必要的話,就不要去這樣包裝程序。


          6.避免沒有意義的數(shù)據(jù)拷貝

          上圖的程序中,list6是一次沒有意義的數(shù)據(jù)拷貝,不僅造成了程序運(yùn)行時(shí)間的損耗,而且造成了內(nèi)存資源的浪費(fèi)。


          7.更改值時(shí)避免使用臨時(shí)變量

          上述的程序中,temp的臨時(shí)變量是不需要的,使用臨時(shí)變量temp造成了程序運(yùn)行時(shí)間的增加。


          8.字符串變量的操作

          當(dāng)字符串str1和str2操作使用“+”號(hào)操作時(shí),Python解釋器將申請(qǐng)內(nèi)存空間,將數(shù)據(jù)str1和str2分別復(fù)制到新的內(nèi)存空間中去,所以當(dāng)進(jìn)行N次的字符串”+“操作時(shí),將會(huì)生成N-1個(gè)中間的結(jié)果,并且每個(gè)中間結(jié)果都會(huì)復(fù)制到新的內(nèi)存空間中。

          當(dāng)使用join函數(shù)時(shí),join函數(shù)將會(huì)一次性計(jì)算所需的所有內(nèi)存空間,然后申請(qǐng)內(nèi)存空間,并將所有的字符串元素復(fù)制到申請(qǐng)的內(nèi)存中去。


          9.巧用if判斷

          在運(yùn)用if進(jìn)行判斷時(shí),常用的有兩種方式。
             1 if ...and...。
             2 if... or ...。
          為了節(jié)省程序的運(yùn)算時(shí)間,當(dāng)進(jìn)行if x and y的判斷時(shí),x需要是False可能性比較高的判斷條件。當(dāng)進(jìn)行 if x or y的判斷時(shí),x需要是True可能性比較高的判斷條件。


          10.利用for循環(huán)代替while循環(huán)

          上圖的程序中,可以看到,同樣的功能利用for循環(huán)來替代while循環(huán),for循環(huán)的速度要快于while循環(huán)。


          總結(jié)
          通過以上的10個(gè)小的案例,我們沒有利用任何的第三方庫或者是裝飾器,單純的從程序優(yōu)化的角度來提升了Python程序的運(yùn)行速度。大家可以借鑒上述的十個(gè)小的案例,在日常的程序編寫過程中提升程序的運(yùn)行速度。

          推薦閱讀:

          入門: 最全的零基礎(chǔ)學(xué)Python的問題  | 零基礎(chǔ)學(xué)了8個(gè)月的Python  | 實(shí)戰(zhàn)項(xiàng)目 |學(xué)Python就是這條捷徑


          干貨:爬取豆瓣短評(píng),電影《后來的我們》 | 38年NBA最佳球員分析 |   從萬眾期待到口碑撲街!唐探3令人失望  | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個(gè)海量小姐姐素描圖 |


          趣味:彈球游戲  | 九宮格  | 漂亮的花 | 兩百行Python《天天酷跑》游戲!


          AI: 會(huì)做詩的機(jī)器人 | 給圖片上色 | 預(yù)測(cè)收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影


          年度爆款文案


          點(diǎn)閱讀原文,領(lǐng)廖雪峰大數(shù)據(jù)視頻資料!

          瀏覽 24
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本大鸡巴操逼视频 | 操逼www. | 欧美色图亚洲色图另类 | 日皮视频免费播放 | 国产免费A片 |