python面试题整理(二)
1、进程,线程,协程定义,有什么区别 进程是操作系统分配资源的最小单位,一个进程对应一块CPU 线程是进程中的某一个控制单元,是CPU调度的最小单元,线程之间相互独立,进程结束线程也会结束,一个进程至少要有一个线程 协程是更加轻量级的存在,不是由CPU进程管理而是由程序员管理,在执行一个函数过程中可以中断执行另一个函数,执行一个函数过程就叫协程,python3以前使用 yield 表示协程,yield关键字一般用于做生成器,实现在函数中暂停的效果,python3.3以后出现 yield from 后面跟可迭代对象,3.5以后使用 async和await 实现原生协程。 区别: (1) 线程之间切换是由操作系统决定的 ,切换速度特别快,但是切换频率太高, 协程之间切换由程序决定 ,不会像线程切换那么耗费资源,在高并发下执行效率更高, 性能更优 (2)协程中控制共享资源不加锁 (3)协程使用同步的方式实现异步,在单进程里实现任务切换 2、子进程是什么 在一个进程中创建开启另一个进程,这个进程称为子进程,即在父进程中创建的进行 3、僵尸进程知道吗 父进程还在执行,子进程执行完毕后不会立即退出,操作系统会清理内存空间,但是保留进程号(pid),等待父进程清理资源,这个时候子进程成为僵尸进程 4、线程和协程有什么区别