Python性能分析与优化,GIL 学习笔记
其他
2020-02-19 10:19:39
阅读次数: 0
什么是CPython GTL
- CPython解释器内存管理并不是是线程安全的
- 保护多线程情况下对Python对象的访问
- CPython使用简单的锁机制避免了多个线程同时执行字节码
GIL的影响
- 同一时间只有一个线程执行字节码
- CPU密集程序(大量时间花在计算)难以利用多核优势
- IO期间会释放GIL,对IO密集程序(大量时间花在网络、磁盘读写)影响不大
如何规避GIL影响
- CPU密集的可以使用多进程+线程池
- IO密集可以使用多线程/协程
- cython拓展
Python什么操作才是原子的?一步执行完
- 一个操作如果是一个字节码指令就可以完成就是原子的
- 原子是可以保证线程安全的
- 使用dis操作来分析字节码
服务端性能优化
- 数据结构与算法优化
- 数据库层:索引优化、慢查询消除、批量操作删除IO,NoSql
- 网络IO:批量操作,pipline操作,减少IO
- 缓存:使用内存数据库 redis/mecached
- 异步:asynio,celery
- 并发:gevent/多线程
发布了15 篇原创文章 ·
获赞 4 ·
访问量 1038
转载自blog.csdn.net/qq_37316153/article/details/104250366