多进程、多线程的介绍
一、关于python 中 GIL
锁的认识
python
的作者在设计之初,从多线程安全方面考虑,在全局加了一把锁(GIL
),GIL
产生的结果: 只能在同一个时刻,只有一个线程在运行,这样就不需要我们自己手动去加锁,来确保线程安全。我们在python
中开多线程,但是其本质是多个线程之间不停的切换,不停的抢占资源。在多核计算机的时代,GIL
锁的存在,似乎已经是一个BUG
了,但是由于历史的问题,GIL
锁是不可能去除(历史项目不可能重写),在实际开发中我们针对IO
密集型的采用的方案是:多进程+协程
二、并发与并行的认识
- 1、并发:是指一个时间段内,有几个程序在同一个
CPU
上运行,但任意时刻只有一个程序在CPU
上运行 - 2、并行:是指任意时刻有多个程序同时运行在多个
CPU
上 - 3、总结:并发通常是指有多个任务需要同时进行,并行则是同一个时刻有多个任务执行
三、IO
密集型和计算密集型的认识
- 1、
IO
密集型:python
的多线程适合做IO
密集型的,特别是采用多进程+协程的方式 - 2、计算密集型:
python
的多线程不适合做计算密集型
四、多进程、多线程、CPU
的关系
1、关于多线程与
CPU
的关系2、进程与线程的关系