Python性能分析与优化,GIL 学习笔记

什么是CPython GTL

  1. CPython解释器内存管理并不是是线程安全的
  2. 保护多线程情况下对Python对象的访问
  3. CPython使用简单的锁机制避免了多个线程同时执行字节码

GIL的影响

  1. 同一时间只有一个线程执行字节码
  2. CPU密集程序(大量时间花在计算)难以利用多核优势
  3. IO期间会释放GIL,对IO密集程序(大量时间花在网络、磁盘读写)影响不大

如何规避GIL影响

  1. CPU密集的可以使用多进程+线程池
  2. IO密集可以使用多线程/协程
  3. cython拓展

Python什么操作才是原子的?一步执行完

  1. 一个操作如果是一个字节码指令就可以完成就是原子的
  2. 原子是可以保证线程安全的
  3. 使用dis操作来分析字节码

服务端性能优化

  1. 数据结构与算法优化
  2. 数据库层:索引优化、慢查询消除、批量操作删除IO,NoSql
  3. 网络IO:批量操作,pipline操作,减少IO
  4. 缓存:使用内存数据库 redis/mecached
  5. 异步:asynio,celery
  6. 并发:gevent/多线程
发布了15 篇原创文章 · 获赞 4 · 访问量 1038

猜你喜欢

转载自blog.csdn.net/qq_37316153/article/details/104250366