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

问题一

看了一些关于python中全局锁的文章,大概意思是说python中所有的多线程都会受GIL这把大锁的控制,python实际上只能在一个cpu下面执行,多线程只是内部调度带来的错觉。

但是对于处理IO操作而非计算操作的线程,python的多线程还是非常有用的。

对于上面这句话,请问意思是说在执行相关的文件读写(IO操作)的这个线程,在执行文件读写操作的这个线程会暂时释放手中的GIL,把CPU的控制权交给其他的线程吗?

问题二

看到书上说对于web程序的瓶颈很多时候是由于IO操作导致的,请问这句话有该怎么理解?web应用(django/flask等)中的一次请求和IO操作有啥关系,不是只有一次socket的建立吗?或者这里说的IO操作是对于数据库的查询,数据库的查询会拖累整个程序的速度?

交互式爱情
浏览 640回答 4
4回答

浮云间

既然邀请我了,就补充一点:GIL 是每个线程执行100个字节码就会切换一次控制权。 没注意看是2016 年的问题,谁乱邀请我来挖坟的?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python