协程课堂小结day31
昨日回顾 GIL全局解释锁 python解释器 Cpython(C语言编写) Jpython(Java编写) Ppython(Python编写) GIL全局解释锁 基于CPython来研究全局解释器锁,因为CPython的内存线程不是安全的 GIL本质上是一个互斥锁 GIL是为了阻止同一个进程内多个线程同时执行(并行) GIL的存在就是为了保证线程安全 注意:多个线程过来执行,一旦遇到IO操作,就会立马释放GIL解释器锁,交给下一个先进来的线程 多线程的作用 计算密集型程序 在单核情况下,若一个任务需要10s 开启进程,消耗资源大,执行4个进程需要40s 开启线程,消耗资源小,执行4个线程需要40s 在多核情况下,若一个任务需要10s 开启进程,并行执行,效率较高,执行4个进程需要10s 开启线程,并发执行,效率较低,执行4个线程需要40s IO密集型程序 在单核情况下,若一个任务需要10s 开启进程,消耗资源大,执行4个进程需要40s 开启线程,消耗资源小,执行4个线程需要40s 在多核情况下,若一个任务需要10s 开启进程,并行执行,效率小于线程,因为遇到IO会立即切换CPU执行权限,执行4个进程需要10s = 开启进程的额外时间 开启线程,并发执行,效率高于进程,执行4个线程需要40s 死锁现象 死锁是指两个或两个以上的进程或线程在执行过程中