一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python性能調優的十個小技巧總結

Python性能調優的十個小技巧總結

2022-03-04 00:08Python學習與數據挖掘 Python

大家好,今天這篇文章關于Python性能調優的10個小技巧,每天花5-10分鐘閱讀我的文章,對你技術提升一定會有幫助。喜歡記得收藏以防迷路

1 多使用列表生成式

替換下面代碼:

cube_numbers = []
for n in range(0,10):
  if n % 2 == 1:
    cube_numbers.append(n**3)

為列表生成式寫法:

cube_numbers = [n**3 for n in range(1,10) if n%2 == 1]

 

2 內置函數

盡可能多使用下面這些內置函數:

Python性能調優的十個小技巧總結

 

3 盡可能使用生成器

單機處理較大數據量時,生成器往往很有用,因為它是分小片逐次讀取,最大程度節省內存,如下網頁爬取時使用yield

import requests
import re

def get_pages(link):
pages_to_visit = []
pages_to_visit.append(link)
pattern = re.compile('https?')
while pages_to_visit:
  current_page = pages_to_visit.pop(0)
  page = requests.get(current_page)
  for url in re.findall('<a href="([^" rel="external nofollow" ]+)">', str(page.content)):
    if url[0] == '/':
      url = current_page + url[1:]
    if pattern.match(url):
      pages_to_visit.append(url)
  # yield
  yield current_page
webpage = get_pages('http://www.example.com')
for result in webpage:
print(result)

 

4 判斷成員所屬關系最快的方法使用 in

for name in member_list:
print('{} is a member'.format(name))

 

5 使用集合求交集

替換下面代碼:

a = [1,2,3,4,5]
b = [2,3,4,5,6]

overlaps = []
for x in a:
for y in b:
  if x==y:
    overlaps.append(x)

print(overlaps)

修改為set和求交集:

a = [1,2,3,4,5]
b = [2,3,4,5,6]

overlaps = set(a) & set(b)

print(overlaps)

 

6 多重賦值

Python支持多重賦值的風格,要多多使用

first_name, last_name, city = "Kevin", "Cunningham", "Brighton"

 

7 盡量少用全局變量

Python查找最快、效率最高的是局部變量,查找全局變量相對變慢很多,因此多用局部變量,少用全局變量。

 

8 高效的itertools模塊

itertools模塊支持多個迭代器的操作,提供最節省內存的寫法,因此要多多使用,如下求三個元素的全排列:

import itertools
iter = itertools.permutations(["Alice", "Bob", "Carol"])
list(iter)

 

9 lru_cache 緩存

位于functools模塊的lru_cache裝飾器提供了緩存功能,如下結合它和遞歸求解斐波那契數列第n:

import functools

@functools.lru_cache(maxsize=128)
def fibonacci(n):
if n == 0:
  return 0
elif n == 1:
  return 1
return fibonacci(n - 1) + fibonacci(n-2)

因此,下面的遞歸寫法非常低效,存在重復求解多個子問題的情況:

def fibonacci(n):
if n == 0: # There is no 0'th number
  return 0
elif n == 1: # We define the first number as 1
  return 1
return fibonacci(n - 1) + fibonacci(n-2)

 

10 內置函數、key和itemgetter

上面提到盡量多使用內置函數,如下對列表排序使用key,operator.itemgetter:

import operator
my_list = [("Josh", "Grobin", "Singer"), ("Marco", "Polo", "General"), ("Ada", "Lovelace", "Scientist")]
my_list.sort(key=operator.itemgetter(0))
my_list

 

技術交流

歡迎轉載、收藏、有所收獲點贊支持一下!

Python性能調優的十個小技巧總結

到此這篇關于Python性能調優的十個小技巧總結的文章就介紹到這了,更多相關Python 性能調優內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_38037405/article/details/121397440

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 教室眠催白丝美女校花 | 91亚洲精品久久91综合 | 日本xxx片免费高清在线 | 日本免费高清在线 | 513热点 | 免费看国产精品久久久久 | 国产欧美日韩在线观看精品 | 美女脱了内裤打开腿让人桶网站o | 变形金刚第一部 | 欧美日韩在线成人看片a | 掰开逼操 | 特黄a级三级三级野战 | 91精品国产综合久久香蕉 | sss在线播放| japan孕妇孕交freehd | 女人张开腿 让男人桶个爽 免费观看 | 久久电影精品久久99久久 | 国产成人一区二区三区视频免费蜜 | yy6080午夜国产免费福利 | 日本人与黑人做爰视频网站 | 免费91麻豆精品国产自产在线观看 | 丰满大乳欲妇三级k8 | 亚洲AV永久无码精品老司机蜜桃 | 五月天精品视频播放在线观看 | juliaann大战两个黑人 | 天天性综合 | 亚洲精品第五页 | 精品香蕉99久久久久网站 | 亚洲人成网站在线观看妞妞网 | 啪啪艹 | 美女把小内内脱个精光打屁屁 | 美女秘密网站 | 风间由美m3u8在线 | 美女口述又粗又大感觉 | 欧美高清乌克兰精品另类 | 国产区香蕉精品系列在线观看不卡 | 日本在线你懂的 | 精品亚洲视频在线 | 欧美日韩1区2区 | 国产大片免费在线观看 | 久久天堂成人影院 |