GIL

只谈情不闲聊 提交于 2019-11-30 01:08:10

GIL

GIL介绍

在Cpython解释器中有一把GIL锁(全局解释器锁),GIL锁本质是一把互斥锁

导致了同一进程下,同一时间只能运行一个线程,无法利用多核优势

同一个进程下多个线程只能实现并发不能实现并行

为什么要有GIL?

因为Cpython自带的垃圾回收机制不是线程安全的,所有要有GIL锁

案例分析

我们有四个任务需要处理,处理方式肯定是要玩出并发的效果,解决方案可以是:

方案一:开启四个进程

方案二:一个进程下,开启四个线程

#计算密集型  推荐使用多进程
#每个都要计算10s
多线程
在同一时刻只有一个线程会被执行,也就意味着每个10s都不能省,分开每个都要计算10,共计40.ns
多进程
可以并行的执行多个线程,10s+开启进程的时间
#io密集型   推荐多线程
#4个任务每个人物90%大部分时间都在io
#每个任务io10s 0.5s
多线程
可以实现并发,每个线程io的时间不咋占用cpu, 10s + 4个任务的计算时间
多进程
可以实现并行,10s+1个任务执行的时间+开进程的时间
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!