繁体   English   中英

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

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

我对这个问题背景的理解:

  • GIL 将 python 限制为一次运行一个线程。
  • 由于 GIL,多线程长计算没有用
  • 线程仍然有用
  • 线程可能对 I/O 操作很有用

因此我的问题是:

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

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

GIL 不会在这里伤害你。

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

关于一般经验法则,您是对的:您可以进行 I/O 并且 GIL 不会伤害您,但是对于受处理器限制的任务,您应该尝试改用多处理

有关 GIL 的更多信息,您可以查看David Beazley 的演讲

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM