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

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

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

服務(wù)器之家 - 腳本之家 - Python - Python性能調(diào)優(yōu)的十個(gè)小技巧總結(jié)

Python性能調(diào)優(yōu)的十個(gè)小技巧總結(jié)

2022-03-04 00:08Python學(xué)習(xí)與數(shù)據(jù)挖掘 Python

大家好,今天這篇文章關(guān)于Python性能調(diào)優(yōu)的10個(gè)小技巧,每天花5-10分鐘閱讀我的文章,對(duì)你技術(shù)提升一定會(huì)有幫助。喜歡記得收藏以防迷路

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 內(nèi)置函數(shù)

盡可能多使用下面這些內(nèi)置函數(shù):

Python性能調(diào)優(yōu)的十個(gè)小技巧總結(jié)

 

3 盡可能使用生成器

單機(jī)處理較大數(shù)據(jù)量時(shí),生成器往往很有用,因?yàn)樗欠中∑鸫巫x取,最大程度節(jié)省內(nèi)存,如下網(wǎng)頁爬取時(shí)使用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 判斷成員所屬關(guān)系最快的方法使用 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支持多重賦值的風(fēng)格,要多多使用

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

 

7 盡量少用全局變量

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

 

8 高效的itertools模塊

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

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

 

9 lru_cache 緩存

位于functools模塊的lru_cache裝飾器提供了緩存功能,如下結(jié)合它和遞歸求解斐波那契數(shù)列第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)

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

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 內(nèi)置函數(shù)、key和itemgetter

上面提到盡量多使用內(nèi)置函數(shù),如下對(duì)列表排序使用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

 

技術(shù)交流

歡迎轉(zhuǎn)載、收藏、有所收獲點(diǎn)贊支持一下!

Python性能調(diào)優(yōu)的十個(gè)小技巧總結(jié)

到此這篇關(guān)于Python性能調(diào)優(yōu)的十個(gè)小技巧總結(jié)的文章就介紹到這了,更多相關(guān)Python 性能調(diào)優(yōu)內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人无精品久久久 | 特级淫片欧美高清视频蜜桃 | 亚洲国产成人在线 | 91se在线| h肉动漫在线视频无修无遮挡 | 欧美视频在线一区二区三区 | 亚州第一页 | 99视频九九精品视频在线观看 | 欧美大美bbb和大白屁股 | 成免费视频 | 二次元美女扒开内裤露尿口 | 国产91在线九色 | 欧美日韩国内 | 欧美精品v日韩精品v国产精品 | 亚洲人的天堂男人爽爽爽 | 国产午夜视频在线观看网站 | 国产日韩欧美色视频色在线观看 | 99视频在线免费观看 | 日本大片在线 | 人人人人看人人人做人人 | 青青草国产精品 | 免费大片a一级一级 | 色综合国产 | kayden·kross hd在线 | 日韩版码免费福利视频 | 91精品啪在线观看国产91九色 | 国内精品视频一区二区三区八戒 | 午夜免费啪视频观看视频 | 色亚| 免费网站看v片在线香蕉 | sihu国产午夜精品一区二区三区 | 免费观看俄罗斯特黄特色 | 免费xxxxx大片在线观看影视 | 欧美久在线观看在线观看 | 国产午夜精品久久理论片小说 | 肉文高h调教 | 亚洲天堂网在线观看视频 | 国产精品第3页 | 国产欧美一区二区成人影院 | 欧美高清在线精品一区二区不卡 | 精品AV亚洲乱码一区二区 |