python中的GIL如何影响并行下载网页?

How does the GIL in python affect the downloading of webpages in parallel?

我对本题背景的理解:

因此我的问题是:

GIL 将如何影响所请求网页的下载?进行并行网页请求是否可以很好地利用 python 线程?因为下载网页是一个 I/O 操作,这是否意味着线程有用?

我会想象一个线程会发出请求 > 另一个线程会在某个时候获得控制权并发出自己的请求 > 另一个线程会获得控制权,等等。然后数据将开始流入,但是如何这会被处理吗?下载会中断吗?我想我缺乏对 OS、python 解释器和 OS.

响应处理的低级理解

GIL 不会在这里伤害你。

对于I/O绑定任务(比如下载网页),GIL不是问题。 Python 在 I/O 发生时释放 GIL,这意味着所有线程将能够并行执行请求。每当您对下载的页面进行 处理 时,这就是 GIL 可能伤害您的地方。

关于一般经验法则你是对的:你可以做 I/O 并且 GIL 不会伤害你,但是对于处理器绑定任务,你应该尝试使用 multiprocessing相反。

有关GIL的更多信息,您可以查看David Beazley's talk