干貨技巧!不需要任何工具,10個案例讓Python執行速度飛速提升
雖然有很多的第三方庫可以幫助提升Python的運行速度,但是使用起來非常的麻煩。今天,小編想從程序編寫的角度,來提升程序的運行速度。
1.巧妙的利用Python的數據類型
在Python程序中,對于list列表進行 for i in list1的操作時,其時間復雜度為O(n),而對于set進行for i in set1的操作,時間復雜度為O(1)。所以在程序的執行時間上,就會出現非常大的差距。
2.利用迭代器來替代列表
利用迭代器來代替列表,已經逐漸的成為了Python編程者使用的一種方法,利用迭代器的操作,不僅可以節省時間,更重要的是可以節省大量的內存空間,上圖中,利用列表的操作需要占用大約8M的內存,但是迭代器只需要88個字節。
3.利用局部變量代替全局變量
上圖程序中,全局的變量z放入到函數myFunc中,局部變量的執行時間要小于全局變量,因此程序執行的時間也大大的縮短。
4.避免“點”操作
上圖中可以看到,calculateSqrtWithDot函數和calculateSqrt函數唯一的區別在于是否通過點操作來調用sqrt函數。每當我們點操作來調用函數時,就會觸發特定的方法,例如,__getattribute__() 和__getattr__(),這樣的方法會調用字典操作,從而帶來時間的消耗,因此在程序調用第三方庫時候,可以盡量使用from xx import xx的方法來進行調用。
5.避免不必要的類抽象
在類中,盡量不要去使用裝飾器,描述符等操作來包裝程序,這會給程序的運行帶來負擔,所以如果沒有必要的話,就不要去這樣包裝程序。
6.避免沒有意義的數據拷貝
上圖的程序中,list6是一次沒有意義的數據拷貝,不僅造成了程序運行時間的損耗,而且造成了內存資源的浪費。
7.更改值時避免使用臨時變量
上述的程序中,temp的臨時變量是不需要的,使用臨時變量temp造成了程序運行時間的增加。
8.字符串變量的操作
當字符串str1和str2操作使用“+”號操作時,Python解釋器將申請內存空間,將數據str1和str2分別復制到新的內存空間中去,所以當進行N次的字符串”+“操作時,將會生成N-1個中間的結果,并且每個中間結果都會復制到新的內存空間中。
當使用join函數時,join函數將會一次性計算所需的所有內存空間,然后申請內存空間,并將所有的字符串元素復制到申請的內存中去。
9.巧用if判斷
在運用if進行判斷時,常用的有兩種方式。 1 if ...and...。 2 if... or ...。為了節省程序的運算時間,當進行if x and y的判斷時,x需要是False可能性比較高的判斷條件。當進行 if x or y的判斷時,x需要是True可能性比較高的判斷條件。
10.利用for循環代替while循環
上圖的程序中,可以看到,同樣的功能利用for循環來替代while循環,for循環的速度要快于while循環。
總結
通過以上的10個小的案例,我們沒有利用任何的第三方庫或者是裝飾器,單純的從程序優化的角度來提升了Python程序的運行速度。大家可以借鑒上述的十個小的案例,在日常的程序編寫過程中提升程序的運行速度。