簡體   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