自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開(kāi)發(fā) 后端
對(duì)于Python程序來(lái)說(shuō),雖然程序編寫(xiě)簡(jiǎn)單,容易上手,但是相比于C++、Java等編程語(yǔ)言,Python程序的運(yùn)行速度卻沒(méi)有優(yōu)勢(shì)。

 雖然有很多的第三方庫(kù)可以幫助提升Python的運(yùn)行速度,但是使用起來(lái)非常的麻煩。今天,小編想從程序編寫(xiě)的角度,來(lái)提升程序的運(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.利用迭代器來(lái)替代列表

 

利用迭代器來(lái)代替列表,已經(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ū)別在于是否通過(guò)點(diǎn)操作來(lái)調(diào)用sqrt函數(shù)。每當(dāng)我們點(diǎn)操作來(lái)調(diào)用函數(shù)時(shí),就會(huì)觸發(fā)特定的方法,例如,__getattribute__() 和__getattr__(),這樣的方法會(huì)調(diào)用字典操作,從而帶來(lái)時(shí)間的消耗,因此在程序調(diào)用第三方庫(kù)時(shí)候,可以盡量使用from xx import xx的方法來(lái)進(jìn)行調(diào)用。

5.避免不必要的類抽象

 

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

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

 

上圖的程序中,list6是一次沒(méi)有意義的數(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)來(lái)替代while循環(huán),for循環(huán)的速度要快于while循環(huán)。

總結(jié)

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

責(zé)任編輯:華軒 來(lái)源: 菜鳥(niǎo)編程大本營(yíng)
相關(guān)推薦

2018-01-25 09:28:49

代碼開(kāi)發(fā)工具

2018-01-17 15:33:14

2021-02-05 10:57:03

邊緣計(jì)算首席運(yùn)營(yíng)官

2024-11-01 07:30:00

2016-10-09 20:07:43

2016-02-22 09:27:18

2020-05-29 09:51:07

工具代碼開(kāi)發(fā)

2017-03-13 13:54:40

戴爾

2021-11-03 06:28:21

Python運(yùn)行速度開(kāi)發(fā)

2020-04-27 09:40:13

Reacthooks前端

2020-03-12 14:40:59

Python表格命令行

2012-08-23 09:50:07

測(cè)試測(cè)試人員軟件測(cè)試

2009-11-23 12:45:22

2020-12-07 08:15:11

機(jī)器學(xué)習(xí)人工智能AI

2013-07-08 11:16:05

Windows 7

2018-09-19 12:51:31

樟宜國(guó)際機(jī)場(chǎng)自動(dòng)化機(jī)器人

2015-09-30 09:57:53

天分熱情工程師

2013-12-02 09:43:29

字符串編程

2015-08-20 10:56:19

算法界面開(kāi)發(fā)

2024-02-22 09:00:00

LogitMat數(shù)據(jù)集算法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)