乾貨技巧!不須要任何工具,10個案例讓Python執行速度飛速提高!

對於Python程序來講,雖然程序編寫簡單,容易上手,可是相比於C++、Java等編程語言,Python程序的運行速度卻沒有優點。編程

7df7548ab94981df6237a5ebf50abe1a.png

雖然有不少的第三方庫能夠幫助提高Python的運行速度,可是使用起來很是的麻煩。今天,小編想從程序編寫的角度,來提高程序的運行速度。app

1.巧妙的利用Python的數據類型

image

在Python程序中,對於list列表進行 for i in list1的操做時,其時間複雜度爲O(n),而對於set進行for i in set1的操做,時間複雜度爲O(1)。因此在程序的執行時間上,就會出現很是大的差距。編程語言

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

image

利用迭代器來代替列表,已經逐漸的成爲了Python編程者使用的一種方法,利用迭代器的操做,不只能夠節省時間,更重要的是能夠節省大量的內存空間,上圖中,利用列表的操做須要佔用大約8M的內存,可是迭代器只須要88個字節。ide

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

image

上圖程序中,全局的變量z放入到函數myFunc中,局部變量的執行時間要小於全局變量,所以程序執行的時間也大大的縮短。函數

4.避免「點」操做

image

上圖中能夠看到,calculateSqrtWithDot函數和calculateSqrt函數惟一的區別在因而否經過點操做來調用sqrt函數。每當咱們點操做來調用函數時,就會觸發特定的方法,例如,getattribute() 和getattr(),這樣的方法會調用字典操做,從而帶來時間的消耗,所以在程序調用第三方庫時候,能夠儘可能使用from xx import xx的方法來進行調用。優化

5.避免沒必要要的類抽象

image

在類中,儘可能不要去使用裝飾器,描述符等操做來包裝程序,這會給程序的運行帶來負擔,因此若是沒有必要的話,就不要去這樣包裝程序。spa

6.避免沒有意義的數據拷貝

image

上圖的程序中,list6是一次沒有意義的數據拷貝,不只形成了程序運行時間的損耗,並且形成了內存資源的浪費。orm

7.更改值時避免使用臨時變量

image

上述的程序中,temp的臨時變量是不須要的,使用臨時變量temp形成了程序運行時間的增長。blog

8.字符串變量的操做

image

當字符串str1和str2操做使用「+」號操做時,Python解釋器將申請內存空間,將數據str1和str2分別複製到新的內存空間中去,因此當進行N次的字符串」+「操做時,將會生成N-1箇中間的結果,而且每一箇中間結果都會複製到新的內存空間中。內存

當使用join函數時,join函數將會一次性計算所需的全部內存空間,而後申請內存空間,並將全部的字符串元素複製到申請的內存中去。

9.巧用if判斷

image

在運用if進行判斷時,經常使用的有兩種方式。 1 if ...and...。 2 if... or ...。爲了節省程序的運算時間,當進行if x and y的判斷時,x須要是False可能性比較高的判斷條件。當進行 if x or y的判斷時,x須要是True可能性比較高的判斷條件。

10.利用for循環代替while循環

image

上圖的程序中,能夠看到,一樣的功能利用for循環來替代while循環,for循環的速度要快於while循環。

總結

經過以上的10個小的案例,咱們沒有利用任何的第三方庫或者是裝飾器,單純的從程序優化的角度來提高了Python程序的運行速度。你們能夠借鑑上述的十個小的案例,在平常的程序編寫過程當中提高程序的運行速度。

相關文章
相關標籤/搜索