Python进程与线程
首先大家都知道,线程是我们程序运行的最小单元,在一个进程下可以开启多个线程。
由于python的全局解释器锁(GIL),同一时刻,一个进程中只放出一个线程被cpu执行.但是由于计算机的分片原因,我们感知并不明显。全局解释器锁也是python执行效率与java等语言相比,效率较低的原因。python创始者起初也尝试去掉GIL,但是去掉之后效率并没有提升。。。
Python为了优化该问题,引入多进程,就能在一定程度上弥补线程串行的问题。
那么怎么使用呢?
一般来讲,如果是计算密集型,CPU需求大,那可以采用多进程的方式来充分利用cpu.但是需要注意的是,由于进程是内存独立的,每多开一个进程,就需要多复制一份内存。。
那如果是I/O密集型,对CPU要求并不高时可以优先采用多线程。 如果两者需求都大时,就采用多进程+多线程的方式。