Python编程规范及性能优化三
2013-01-18 18:04
197 查看
使用xrange()处理长序列
这样可为你节省大量的系统内存,因为xrange()在序列中每次调用只产生一个整数元素。而相反range(),它將直接给你一个完整的元素列表,用于循环时会有不必要的开销。
使用 Python generator
这也可以节省内存和提高性能。例如一个视频流,你可以一个一个字节块的发送,而不是整个流。例如:
>>> chunk = ( 1000 * i for i in xrange(1000))
>>> chunk
>>> chunk.next()
0
>>> chunk.next()
1000
>>> chunk.next()
2000
了解itertools模块
该模块对迭代和组合是非常有效的。让我们生成一个列表[1,2,3]的所有排列组合,仅需三行Python代码:
>>> import itertools
>>> iter = itertools.permutations([1,2,3]) #参数也可以是元组、字符串、字典;如果是字典,则对key值进行排列组合
>>> list(iter)
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
学习bisect模块保持列表排序
这是一个免费的二分查找实现和快速插入有序序列的工具。也就是说,你可以使用:
>>> import bisect
>>> bisect.insort(list, element)
你已將一个元素插入列表中, 而你不需要再次调用 sort() 来保持容器的排序, 因为这在长序列中这会非常昂贵.
这样可为你节省大量的系统内存,因为xrange()在序列中每次调用只产生一个整数元素。而相反range(),它將直接给你一个完整的元素列表,用于循环时会有不必要的开销。
使用 Python generator
这也可以节省内存和提高性能。例如一个视频流,你可以一个一个字节块的发送,而不是整个流。例如:
>>> chunk = ( 1000 * i for i in xrange(1000))
>>> chunk
>>> chunk.next()
0
>>> chunk.next()
1000
>>> chunk.next()
2000
了解itertools模块
该模块对迭代和组合是非常有效的。让我们生成一个列表[1,2,3]的所有排列组合,仅需三行Python代码:
>>> import itertools
>>> iter = itertools.permutations([1,2,3]) #参数也可以是元组、字符串、字典;如果是字典,则对key值进行排列组合
>>> list(iter)
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
学习bisect模块保持列表排序
这是一个免费的二分查找实现和快速插入有序序列的工具。也就是说,你可以使用:
>>> import bisect
>>> bisect.insort(list, element)
你已將一个元素插入列表中, 而你不需要再次调用 sort() 来保持容器的排序, 因为这在长序列中这会非常昂贵.
相关文章推荐
- Python编程规范及性能优化(转载)
- 如何成为Python高手(函数式编程、性能、测试、编码规范)
- 【android】编程规范、常用技巧和性能优化
- Python性能优化技巧总结
- 我与python约个会:06Python解释器及性能优化
- Python性能优化的20条建议
- 6个Python性能优化技巧
- 编程之性能优化知多少
- python进阶--性能优化1
- Flex编程注意之性能优化、垃圾回收的一些总结
- Google Python 命名 编程规范 小记录
- Python性能优化
- Android编程开发之性能优化技巧总结
- C语言嵌入系统编程修炼-性能优化
- Java编程中的性能优化(转)
- 30分钟3300%性能提升——python+memcached网页优化小记
- Python性能优化的20条建议
- Python性能优化的20条建议
- Python 代码性能优化技巧
- Python 性能优化【1】-- Python 常用的性能分析工具