为了账号安全,请及时绑定邮箱和手机立即绑定

3-2节例子的疑问

3-2节的例子,老师用来说明多线程的副作用,主要是因为例子是计算密集型的,如果是IO密集型的例子,应该是多线程的耗时更短吧?因为IO密集型,当前线程遇到阻塞可以转去执行别的线程,交给系统的去处理就行,但是计算密集型的,本身是占用CPU资源的,也就失去了多线程的作用,反而因为时间片的切换耗时导致效率更低。请问我的理解对吗?

正在回答

1 回答

IO密集型,确实多线程耗时更短

CPU核数可以理解为里面有几个工人,单核里面只有一个,多核有n个,对于n个工时量的项目,单核需要n小时完成,而多核有n个工人同时干,只需要一个小时就能完成;

但python中由于GIL的存在,同时只能有一个线程运行。就好多核里面的n个工人,但同时只能有1个人工作,其他只能划划水,多核的优势完全被浪费掉了。而且还多了几个工人去抢着工作耗费的无意义时间,也就是你所说的时间片的切换耗时,所以导致耗费时间比单线程要更多。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
深入浅出剖析Python的全局解释锁GIL
  • 参与学习       2608    人
  • 解答问题       9    个

从历史发展的角度来解释GIL的来龙去脉,GIL的本质。

进入课程

3-2节例子的疑问

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信