Python性能调优的小技巧有哪些
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章主要为大家展示了"Python性能调优的小技巧有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python性能调优的小技巧有哪些"这篇文章吧。
千家信息网最后更新 2025年02月19日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安全错误
数据库的锁怎样保障安全
数字证书管理服务器
淄博生产软件开发报价
容桂软件开发招聘
宝山区网络技术转让要多少钱
国家网络安全教育周教育材料
宏达电子软件开发
宁夏网络安全达人
万方学术期刊数据库官网
什么叫网络安全责任保护
公司服务器装机视频
数据库面试常见经典题目
北京隆正软件开发
互联网科技公司服务理念
漳州 游戏软件开发
信息平台的网络安全应急预案
江门服务器钣金机箱定做
网络安全工程师属于哪个专业
计算机网络技术的基本定义
关于业务的数据库设计
2020湖北省教育网络安全
wincc 读取数据库
硚口软件开发价格
沧州南皮网络技术
白宫网络安全指令
风场网络安全备案
大连软件开发电话
关于网络安全的科普知识
北京网络安全反诈中心
筑牢网络安全防线板报
幼儿园网络安全周新闻稿