楼主: 阿扁V5
1327 2

[数据挖掘工具] python性能优化知识点 [推广有奖]

  • 1关注
  • 43粉丝

版主

山野小子

副教授

94%

还不是VIP/贵宾

-

威望
0
论坛币
-12310320 个
通用积分
3822.8538
学术水平
108 点
热心指数
119 点
信用等级
91 点
经验
49314 点
帖子
1168
精华
1
在线时间
651 小时
注册时间
2013-3-22
最后登录
2024-3-17

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

       在初学python时听到最多不仅有易学易懂,同时也会听到不少人说性能差、速度慢,这里参考一篇博客给出的建议,并将一些python性能优化的知识点附上链接,祝大家写的代码都666!

【转载:https://studygolang.com/articles/10728

一般编程语言性能比较这个网站比较有说服力http://benchmarksgame.alioth.debian.org/u64q/ruby.html,现在的情况是python的速度在比较列表编程语言中属于垫底的,但是这并不是说python不可取,pytthon慢到不能工作,通过一些简单的优化和编码规范python的速度还是不错的,整天挂在嘴边python性能不行的都是小白,你要做的系统需要百万并发吗?需要误差在10毫秒内的实时交易吗?需要千万级别服务器端口扫描吗?需要DDOS级别的压力测试吗?需要几个小时内一亿次的弱密码爆破吗?如果你需要,一亿级别爆破和生产环境中的10000QPS个人都用python+c扩展的方式实现过,我可以帮你。

其实绝大多是场景python都能很好的工作,一些对性能要求比较高的场景通过python+c扩展的形式都是可以搞定的,而且省时省力。

以前群里总有个成员成天埋怨,python性能怎么差,自己用起来怎么费力,而不去寻找性能瓶颈在哪儿怎么去做优化。要记住,自己菜逼,怪编程语言是没有用的,这就像蹲坑拉屎,便秘拉不出来,说马桶这个地方地球吸引力太小,听说后来那位朋友去学scala了,还有人说他去学golang了,祝他早日找到自己心中的完美语言。

  • python的编码规范
  • 用生成器和列表推导式
  • 字符串连接如果数量在3个或3个以内,直接用+号,超过3个,用format或者join,join最好,但format和join差别不是很大
  • 不要写递归代码,尾递归也不行,改成循环的形式
  • tuple能解决问题就不要用list,同样set能解决问题就不要用dict,但是dict和list相比,dict速度飞快,就是内存占用大。但是不要刻意去把list转为tuple。
  • 函数能用局部变量,就不要用全局变量
  • 交换变量用pythonic的方式,a,b=b,a就这样
  • map有时候可以代替循环,这个时候应该毫不犹豫的使用map
  • 在循环内部尽量减少不必要的非循环步骤
  • 用while 1别用while True
  • 多个变量值比较的时候可以用a<b<c,a<b<c比a<b and b<c效率更高
  • 计算x的y次幂用x**y,别用pow,难读速度还慢
  • cpu密集计算别用python,即使要用,也要选择numpy之类的库,最好把cpu密集部分改成C代码,然后ctypes调用,cpu密集部分也不推荐cython,总之C扩展>numpy=cython>python
    有些规范和语言无关,就是用C如果你的程序逻辑有问题,还是会慢。


【python性能提高知识点链接】

1.提高Python运行效率的六个窍门
2.Python 程序员需要知道的 30 个技巧
3.Python性能提升小技巧
4.Python拷贝(深拷贝deepcopy与浅拷贝copy)
5.python 提高效率的几个小技巧
6.[python]list, tuple, dictionary, set的底层细节
7.最简单的理解lambda,map,reduce,filter,列表推导式





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:编程语言 编码规范 解决问题 全局变量 内存占用

已有 1 人评分论坛币 热心指数 收起 理由
逐梦的太阳 + 10 + 5 精彩帖子

总评分: 论坛币 + 10  热心指数 + 5   查看全部评分

憧憬机器学习的世界!
沙发
hifinecon 发表于 2018-8-19 23:10:13 |只看作者 |坛友微信交流群
I’m so thankful LZ likes you.

使用道具

藤椅
阿扁V5 学生认证  发表于 2018-8-20 16:05:16 |只看作者 |坛友微信交流群

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 23:50