1.Python速度慢的两大原因
某些特殊情况下,Python比C++慢100~200倍,因此很多公司的基础框架仍然使用C/C++开发,例如阿里、腾讯、快手的推荐引擎、搜索引擎、存储引擎。
原因一:动态类型语言,边解释边执行
原因二:GIL,无法利用多核CPU并发执行
2.GIL是什么?
GIL(Global Interpreter Lock)
计算机程序设计语言解释器用于同步线程的一种机制,它使得任何时刻仅有一个线程在执行,
即使在多核处理器上,使用GIL解释器也只允许同一时间执行一个线程。
由于GIL的存在,即使电脑有多个CPU,单个时刻也只能使用1个CPU,所以相比并发加速的C++/JAVA慢。
3.为什么有GIL?
为了解决多线程之间数据完整性和状态同步问题,简化了对共享数据的管理。
4.怎样规避GIL的限制
1.多线程threading机制依然有用,用于IO密集型计算
因为I/O(read、write、send、recv、etc)期间,线程会释放GIL,实现CPU和IO的并行,因此多线程用于IO密集型计算依然可以大幅度提升速度。
但是多线程用于CPU密集型计算时,只会拖慢速度。
2.使用multiprocessing的多进程机制实现并行计算、利用多核CPU优势
为了应对GIL的问题,Python提供了multiprocessing。
参考资料:
B站《Python速度慢罪魁祸首-全局解释器锁GIL》