溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

提升Python執(zhí)行速度的10種方法分享

發(fā)布時間:2021-06-18 16:50:06 來源:億速云 閱讀:210 作者:栢白 欄目:編程語言

今天小編給大家分享的是提升Python執(zhí)行速度的10種方法,相信很多人都不太了解,為了讓大家更加了解,所以給大家總結了以下內容,一起往下看吧。一定會有所收獲的哦。

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

提升Python執(zhí)行速度的10種方法分享

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

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

提升Python執(zhí)行速度的10種方法分享

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

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

提升Python執(zhí)行速度的10種方法分享

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

4.避免“點”操作

提升Python執(zhí)行速度的10種方法分享

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

5.避免不必要的類抽象

提升Python執(zhí)行速度的10種方法分享

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

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

提升Python執(zhí)行速度的10種方法分享

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

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

提升Python執(zhí)行速度的10種方法分享

上述的程序中,temp的臨時變量是不需要的,使用臨時變量temp造成了程序運行時間的增加。

8.字符串變量的操作

提升Python執(zhí)行速度的10種方法分享

當字符串str1和str2操作使用“+”號操作時,Python解釋器將申請內存空間,將數(shù)據(jù)str1和str2分別復制到新的內存空間中去,所以當進行N次的字符串”+“操作時,將會生成N-1個中間的結果,并且每個中間結果都會復制到新的內存空間中。

當使用join函數(shù)時,join函數(shù)將會一次性計算所需的所有內存空間,然后申請內存空間,并將所有的字符串元素復制到申請的內存中去。

9.巧用if判斷

提升Python執(zhí)行速度的10種方法分享

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

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

提升Python執(zhí)行速度的10種方法分享

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

關于提升Python執(zhí)行速度的10種方法分享就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI