Python Notes0:Python导读

Python Notes0:Python导读

Python速度慢的两大原因

相比C/C++/JAVA,Python确实很慢,在一些特殊的场景下,Python比C++慢100~200倍
  1. Python慢的原因一:动态型语言、边解释边执行
  1. Python速度慢的原因二:GIL无法利用多核GPU并发执行

GIL

全局解释器锁(英语:Global Interpreter Lock)
GIL是计算机程序设计语言解释器用于同步线程的一种机制,它使得任何时刻仅有一个线程在执行。即便是在多核心处理器上,使用GIL的解释器也仅允许同一时间执行一个线程。
notion image

为什么会有GIL

Python设计初期,为了规避并发问题引入了GIL,现在想去却去不掉了。
引入GIL的好处:解决多线程之间数据完整性和状态同步问题。

怎样规避GIL带来的限制

GIL带来的限制是:单一时刻只有一个线程在运行,无法使用多核CPU的优势,但它并非是毫无用处的。下面是GIL的使用场景:
  1. 多线程threading机制仍然是有用的,用于IO密集型计算(IO-bound) 。因为在I/O期间,线程会释放GIL,实现CPU和IO的并行。因此,多线程用于IO密集型计算仍然可以大幅度提升速度多线程用于CPU密集型计算时,只会更加拖慢速度(因为对于多线程,只有一个CPU可以用,同时又会经常发生多线程的切换->带来很多开销,因此会拖慢速度)
  1. 使用multiprocessing的多进程机制实现并行计算、利用多核CPU优势,因此多进程适用于CPU密集型计算
 
Python