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

关于python的多线程(GIL)只适合用于处理IO操作的困惑?

关于python的多线程(GIL)只适合用于处理IO操作的困惑?

交互式爱情 2019-02-22 15:44:08
问题一 看了一些关于python中全局锁的文章,大概意思是说python中所有的多线程都会受GIL这把大锁的控制,python实际上只能在一个cpu下面执行,多线程只是内部调度带来的错觉。 但是对于处理IO操作而非计算操作的线程,python的多线程还是非常有用的。 对于上面这句话,请问意思是说在执行相关的文件读写(IO操作)的这个线程,在执行文件读写操作的这个线程会暂时释放手中的GIL,把CPU的控制权交给其他的线程吗? 问题二 看到书上说对于web程序的瓶颈很多时候是由于IO操作导致的,请问这句话有该怎么理解?web应用(django/flask等)中的一次请求和IO操作有啥关系,不是只有一次socket的建立吗?或者这里说的IO操作是对于数据库的查询,数据库的查询会拖累整个程序的速度?
查看完整描述

4 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

既然邀请我了,就补充一点:GIL 是每个线程执行100个字节码就会切换一次控制权。


没注意看是2016 年的问题,谁乱邀请我来挖坟的?

查看完整回答
反对 回复 2019-03-04
  • 4 回答
  • 0 关注
  • 639 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信