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高性能编程》

你可能感兴趣的:(python深入系列(四):高性能python代码)