簡體   English   中英

受CPU約束的線程是否總是需要Python中的GIL?

[英]Does a cpu-bound thread always reaquire the GIL in Python?

我正在瀏覽David Beazley的GIL相關幻燈片,試圖了解是什么導致Python中的線程切換。 但是,很多事情困擾着我。

http://www.dabeaz.com/python/UnderstandingGIL.pdf

似乎經過100個滴答之后,當前線程釋放了GIL,並且如果它是CPU綁定的,它將重新獲取它?

另一方面,如果它休眠或處於I / O綁定狀態,則另一個線程將獲取GIL。

因此,如果某個線程受CPU限制,它將繼續獲取直到完成任務為止?

它將嘗試重新獲取GIL,直到完成或在I / O處暫停或類似操作。 但是,如果程序中還有其他CPU綁定,它們還將嘗試獲取GIL,因此無論何時釋放GIL,都需要進行仲裁,以決定允許誰獲取它。

但是,如果沒有其他線程可以運行(例如,所有其他線程都在等待I / O),則正在運行的線程將每次都獲得鎖。 但是,每100個滴答聲仍然會有開銷,需要釋放釋放的舞蹈。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM