当前位置: 首页 > 后端技术 > Python

这10个Python性能调优技巧你知道几个?

时间:2023-03-26 15:23:04 Python

1用列表生成替换以下代码:cube_numbers=[]forninrange(0,10):ifn%2==1:cube_numbers.append(n**3)isalistgeneration:cube_numbers=[n**3forninrange(1,10)ifn%2==1]2内建函数尽可能使用以下内建函数:3当尽可能使用生成器处理大在单机数据量大的情况下,生成器往往是非常有用的,因为它是一个一个的小块读取,最大程度的节省内存。爬取以下网页时,使用yieldimportrequestsimportredefget_pages(link):pages_to_visit=[]pages_to_visit.append(link)pattern=re.compile('https?')whilepages_to_visit:current_page=pages_to_visit.pop(0)page=requests.get(current_page)forurlinre.findall('',str(page.content)):ifurl[0]=='/':url=current_page+url[1:]ifpattern.match(url):pages_to_visit.append(url)#yieldyieldcurrent_pagewebpage=get_pages('http://www.example.com')forresultinwebpage:print(result)复制代码4最快确定成员关系的方法在member_list中使用inforname:print('{}isamember'.format(name))5使用sets求交集替换如下代码:a=[1,2,3,4,5]b=[2,3,4,5,6]overlaps=[]forxina:foryinb:ifx==y:overlaps.append(x)print(overlaps)修改为setandintersection: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寻找最快最有效的局部变量,而寻找全局变量要慢很多,所以多用局部变量,少用全局变量。8Efficientitertoolsmoduleitertools模块支持多个迭代器的运行,提供了最节省内存的写法,所以需要经常使用。找到三个元素的完整排列如下:importitertoolsiter=itertools.permutations(["Alice","Bob","Carol"])list(iter)9lru_cache位于functools模块中的lru_cache装饰器提供缓存功能,结合递归求解第n个斐波那契数列如下:importfunctools@functools.lru_cache(maxsize=128)deffibonacci(n):ifn==0:return0elifn==1:return1returnfibonacci(n-1)+fibonacci(n-2)所以下面的递归写法效率很低,有重复解多个子问题的情况:deffibonacci(n):ifn==0:#没有0'thnumberreturn0elifn==1:#我们定义第一个数为1return1returnfibonacci(n-1)+fibonacci(n-2)10上面提到的内置函数、key和itemgetter尽量使用内置函数,使用key对list排序如下,importoperatormy_list=[("Josh","Grobin","Singer"),("Marco","Polo","General"),("Ada","Lovelace","Scientist")]my_list.sort(key=operator.itemgetter(0))my_list最近整理了数百GB的Python学习资料,包括初学者电子书、教程、源码代码等,免费分享给大家!想上“Python编程学习圈”,发“J”免费领取