我对这个问题背景的理解:
因此我的问题是:
GIL如何影响下载所请求的网页?并行网页请求是否可以很好地利用python线程?因为下载网页是I / O操作,这是否意味着线程有用?
我会想象一个线程会发出请求>另一个线程会在某个时刻通过控制并发出自己的请求>另一个线程将通过控制等。然后数据将开始流入,但如何处理?下载会中断吗?我想我缺乏对操作系统,python解释器和操作系统的响应处理的低级理解。
答案 0 :(得分:2)
对于I / O绑定任务(如下载网页),GIL不是问题。当I / O发生时,Python会释放GIL,这意味着所有线程都能够并行执行请求。每当您对下载的页面进行处理时,这就是GIL会伤害您的地方。
你的一般经验法则是正确的:你可以做I / O而GIL不会伤害你,但是对于处理器绑定的任务,你应该尝试使用multiprocessing。
有关GIL的更多信息,您可以查看David Beazley's talk