python 随记

作者: firewt | 来源:发表于2017-08-23 19:03 被阅读702次

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

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

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

  1. 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随记

    遍历文件夹

  • python 随记

    Python性能提升的一些技巧(持续更新)一般编程语言性能比较这个网站比较有说服力http://benchmark...

  • Python 随记

    要使用模块重载函数reload()在Python3中需要导入包 from imp import reload()在...

  • Python 随记

    from sklearn import metrics 其中metrics是度量,是用来统计计算应用的性能指标,...

  • python 随记(2)

    python3中的url编码解码模块使用 在requests中对请求的参数即使不进行url编码(UrlEncode...

  • python 随记(4)

    1. 匿名函数 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。用匿名函数有...

  • python 随记(3)

    高阶函数 1. 变量可以指向函数 函数式编程还是比较有意思的: 函数是Python内建支持的一种封装,我们通过把大...

  • python 随记(5)

    python 使用set对列表去重,并保持列表原来顺序: list.sort([func])方法如果没有制定fun...

  • python学习随记

    统计代码执行消耗的时间

  • 2022-09-25

    随记

网友评论

    本文标题:python 随记

    本文链接:https://www.haomeiwen.com/subject/vsrjdxtx.html