python深入系列(四):高性能python代码

1、性能分析工具

cProfile、hotshot、profile、runsnake(可视化cProfile分析结果)、line_profiler(逐行分析)、memory_profiler(诊断内存,安装psutil可提速,mprof功能可用于采样画图)、heapy(分析堆占用,处理内存泄漏)、dowser(实时画出变量实例)、dozer、dis(检查字节码,字节码越多执行越慢)、coverage.py(测试代码覆盖率)、perf(linux内存工具)、GIL可视化

2、元组列表字典集合优化

  • 使用bisect模块
  • 使用内部tim排序
  • 元组缓存于运行时环境,不需要分配内存
  • 元组要比列表创建快得多,因为不用访问操作系统
  • 字典需要更多的内存,而且性能依赖于散列函数
  • 集合内部也使用散列表,add操作为O(1)
  • 字典或集合初始最小长度为8,然后以4倍增长,到50000时以2倍增长

3、迭代器和生成器

  • for循环内部是迭代器
  • 没特殊情况多用迭代器和生成器,性能略好内存更少,且可兼容多CPU或计算机场景
  • 内存分配并不便宜,重用已分配的内存可提升速度
  • 矢量化操作时使用numpy效率可提高几十倍(内存本地化、连续化)

4、并发编程

  • 使用gevent、tornado、asyncio实现异步IO,特殊情况下会有几十倍的提升

(持续更新......)

——————————————————————————————

  • 注:参考《python高性能编程》
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容