Python性能调优的小技巧有哪些
发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,这篇文章主要为大家展示了"Python性能调优的小技巧有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python性能调优的小技巧有哪些"这篇文章吧。
千家信息网最后更新 2024年11月21日Python性能调优的小技巧有哪些
这篇文章主要为大家展示了"Python性能调优的小技巧有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python性能调优的小技巧有哪些"这篇文章吧。
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 内置函数
尽可能多使用下面这些内置函数:
3 尽可能使用生成器
单机处理较大数据量时,生成器往往很有用,因为它是分小片逐次读取,最大程度节省内存,如下网页爬取时使用yield
import requestsimport redef 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('', str(page.content)): if url[0] == '/': url = current_page + url[1:] if pattern.match(url): pages_to_visit.append(url) # yield yield current_pagewebpage = 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 itertoolsiter = 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 operatormy_list = [("Josh", "Grobin", "Singer"), ("Marco", "Polo", "General"), ("Ada", "Lovelace", "Scientist")]my_list.sort(key=operator.itemgetter(0))my_list
以上是"Python性能调优的小技巧有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
变量
函数
生成
性能
技巧
全局
内容
写法
模块
篇文章
最快
交集
代码
内存
多个
尽可能
局部
生成器
缓存
递归
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
保险公司送的服务器是什么意思
vs2015数据库表打不开
计算机网络安全规划与实施
技术手段避免数据库数据泄密
g2 媒体服务器
抚顺app软件开发服务
文字是不是数据库
机票预订系统总体设计数据库设计
iis 找不到服务器
网络技术考试题答案
sql数据库查询前几
网络安全解决方案试题
网络安全管理团队建设
检索中文学位论文的数据库
2022国家网络安全政策趋势
医疗数据库的构建
localforge创建数据库
dm数据库配置
学习网络技术有哪些用处
网站服务器提高并发量
学网络安全检查找什么工作好
专业音质软件开发上市公司
南理工数据库期末考试
开发区网络安全活动
江苏进口软件开发常见问题
放置与召唤服务器
健康信息管理软件开发
北大普惠金融指数数据库下载
博山办公自动化oa软件开发
网站服务器提高并发量