并发编程(二)
在后续学习多线程、多进程、协程之前,对一些概念要清楚:
1、进程
资源分配的基本单位,也可以理解为操作系统中正在执行的程序,每个应用程序都有一个自己的进程
特点:对python而言,可以实现真正的并行效果
缺点:进程间切换,开销大,容易消耗CPU资源,进程间通信相对线程来说比较麻烦
一个进程启动时都会最先产生一个线程,即主线程,然后主线程会创建其他的子线程
2、线程
独立运行和独立调度的基本单位,一个基本的CPU执行单元,他必须依托于进程存活,是进程中最小的执行单位
特点:无法利用多核,无法实现真正意义上的并行效果
缺点:对于IO密集型的操作可以很好利用IO阻塞的时间
3、进程和线程的区别
3.1、线程必须在某个进程中执行
3.2、一个进程可包含多个线程,其中有且只有一个主线程
3.3、多线程共享同一个内存地址、打开的文件以及其他资源
3.4、多进程共享物理内存、磁盘、打印机以及其他资源
4、死锁
概念:多个进程、线程在运行过程中因竞争同一资源而产生的一种僵局
产生的原因:
3.1、竞争资源
3.2、进程间推进顺序非法