python 性能鸡汤
转载自:http://www.oschina.net/question/1579_45822 1:使用内建函数
input() int() isinstance() issubclass() iter() open() ord() pow() print() property() 2 使用join()连接字符串
>>> chunk = ['a', 'b', 'c', 'd']
>>> a = '_'.join(chunk)
>>> a
'a_b_c_d' 3 使用python多重赋值,交换变量
>>> x = 0
>>> y = 1
>>> z = 2
>>> x, y, z = z, y, x
>>> x
2
>>> y
1
>>> z
0 4 尽量使用局部变量(python检索局部变量比全局变量快,意味着要减少使用‘global’) 5 使用延迟加载加速
将‘import’声明移入函数中,仅在需要的时候导入。如果某些模块不需要马上使用,稍后导入他们。 6 为无限循环使用‘while 1’
如果需要一个无限循环,例如监听套接字实例。while True 可以实现,但 while 1:是单步运算,可以提高性能: 7 使用 list comprehension
更具可读性(函数式编程) >>> evens = [i for i in range(10) if i % 2 == 0]
>>> evens
[0, 2, 4, 6, 8] 8 使用xrange()处理长序列:
节省内存,因为xrange()在序列每次调用只产生一个整数元素。而range(),它将直接给你一个完整的元素列表,用于循环时会有不必要的开销。 9 使用python generator
节省内存和提高性能,例如一个视频流,你可以一个一个字节的发送,而不是整个流
>>> chunk = (1000 * i for i in xrange(1000))
>>> chunk
<generator object <genexpr> at 0x7f12f0073910>
>>> chunk.next()
0
>>> chunk.next()
1000
>>> chunk.next()
2000
>>> chunk.next()
3000 10 了解itertools模块
该模块对迭代和组合是非常有效的。例如列出列表[1, 2, 3]的所有排列组合,仅须3行代码
>>> import itertools
>>> iter = itertools.permutations([1, 2, 3])
>>> list(iter)
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)] 11 bisect模块保持序列排序
这是一个免费的二分查找实现和快速插入有序序列的工具。
>>> import bisect
>>> list = [1, 4, 7, 9]
>>> bisect.insort(list, 5)
>>> list
[1, 4, 5, 7, 9]
你已将一个元素插入表中,而你不必再次调用sort()来保持容器的排序,因为这在长序列中会非常昂贵。 12 Python中的列表实现并不是以人们通常谈论的计算机科学中的普通单链表实现的。Python中
的列表是一个数组。也就是说,你可以以常量时间O(1) 检索列表的某个元素,而不需要从>头开始搜索。这有什么意义呢? Python开发人员使用列表对象insert()时, 需三思. 例>如:>>> list.insert(0,item) 这个操作很慢
在列表的前面插入一个元素效率不高, 因为列表中的所有后续下标不得不改变. 然而
,您可以使用list.append()在列表的尾端有效添加元素. 挑先deque,如果你想快速的在两
插入或时。它是快速的,因为在Python中的deque用双链表实现。不再多说。 :) 13 使用dict和set检测成员,因为二者用hash实现。
>>> mylist = ['a', 'b', 'c'] #slower , checkmembership with list
>>> 'c' in mylist
True
>>> myset = set(['a', 'b', 'c']) # faster ,checkmembership with set
>>> 'c' in myset
True
>>> 14 http://caoyaojun1988-163-com.iteye.com/blog/1752627 Schwartzian
python lambda表达式:http://developer.51cto.com/art/201301/388431.htm
python 性能鸡汤的更多相关文章
- Python性能鸡汤
http://pythoner.org/wiki/257/ 毫无疑问:Python程序没有编译型语言高效快速. 甚至Python拥护者们会告诉你Python不适合这些领域. 然而,YouTube已用P ...
- Python性能鸡汤(转)
英文原文:http://blog.monitis.com/index.php/2012/02/13/python-performance-tips-part-1/ 英文原文:http://blog.m ...
- Python性能鸡汤(转)
英文原文:http://blog.monitis.com/index.php/2012/02/13/python-performance-tips-part-1/ 英文原文:http://blog.m ...
- Python性能(转)
第一部分 阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门 ...
- Python性能提升小技巧
第一部分 1-使用内建函数: 你可以用Python写出高效的代码,但很难击败内建函数. 经查证. 他们非常快速 2-使用 join() 连接字符串. 你可以使用 + 来连接字符串. 但由于string ...
- Python 性能剖分工具
Python 性能剖分工具 眼看着项目即将完成,却被测试人员告知没有通过性能测试,这种情况在开发中屡见不鲜.接下来的工作就是加班加点地找出性能瓶颈,然后进行优化,再进行性能测试,如此这般周而复始直到通 ...
- Python性能分析
Python性能分析 https://www.cnblogs.com/lrysjtu/p/5651816.html https://www.cnblogs.com/cbscan/articles/33 ...
- python性能分析(一)——使用timeit给你的程序打个表吧
前言 我们可以通过查看程序核心算法的代码,得知核心算法的渐进上界或者下界,从而大概估计出程序在运行时的效率,但是这并不够直观,也不一定十分靠谱(在整体程序中仍有一些不可忽略的运行细节在估计时被忽略了) ...
- python性能监控初试
标 题: python性能监控初试作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990765.html 欢迎转帖 请保持文本完整并注明出处 之前性能统计 ...
随机推荐
- WebRTC clientICE 延迟问题
本文原创自 http://blog.csdn.net/voipmaker 转载注明出处. 近期在优化WebRTCclient呼叫延迟问题.原因是ICE协议栈在收集地址到探測协商过程花费非常长时间.这 ...
- tcp ip参数详解
http://www.cnblogs.com/digdeep/p/4869010.html 1. TCP/IP模型 我们一般知道OSI的网络参考模型是分为7层:“应表会传网数物”——应用层,表示层,会 ...
- Qt 学习之路:线程和 QObject
前面两个章节我们从事件循环和线程类库两个角度阐述有关线程的问题.本章我们将深入线程间得交互,探讨线程和QObject之间的关系.在某种程度上,这才是多线程编程真正需要注意的问题. 现在我们已经讨论过事 ...
- 解读dbcp自动重连那些事---转载
http://agapple.iteye.com/blog/791943 可以后另一篇做对比:http://agapple.iteye.com/blog/772507 同样的内容,不同的描述方式,不一 ...
- Java基础知识强化之集合框架笔记36:List练习之键盘录入多个数据在控制台输出最大值
1. 键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值 分析: • 创建键盘录入数据对象 • 键盘录入多个数据,我们不知道多少个,所以用集合存储 • 以0结束,这个简单,只要键盘 ...
- HDU 4971 - A simple brute force problem【最大权闭合图】
有n(20)个工程,完成每个工程获得收益是p[i],m(50)个需要解决的难题,解决每个难题花费是c[i] 要完成第i个工程,需要先解决ki个问题,具体哪些问题,输入会给出 每个难题之间可能有依赖关系 ...
- java 钱币的单位转换
将钱转成转换为带指定单位的钱 int money = 10; NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US); System ...
- linux的grep命令
参考文档如下: linux grep命令 grep abb15455baeb4b23ab47540272ec47eb epps-sas.log | grep operateSettleBill exp ...
- RecyclerView实例-实现可下拉刷新上拉加载更多并可切换线性流和瀑布流模式(1)
摘要 最近项目有个列表页需要实现线性列表和瀑布流展示的切换,首先我想到的就是上 [RecyclerView],他本身已经很好的提供了三种布局方式,只是简单做个切换应该是很简单的事情,如果要用Recyc ...
- SQL SERVER字符集的研究(中英文字符集,varchar,nvarchar).
一. 试验归类测试SQL: drop table a )) insert into a values('a') insert into a values(N'a') insert into a val ...