簡體   English   中英

有沒有簡單的方法來判斷等待Python GIL花了多少時間?

[英]Is there an easy way to tell how much time is spent waiting for the Python GIL?

我有一個長期運行的Python服務,我想知道等待GIL的任何可運行線程(即,由於某些其他原因未被阻止的線程)花費了多少累積掛鍾時間。 是否有捷徑可尋? 例如,也許我可以定期將一些計數器轉儲到其日志文件中。

我的潛在動機是排除GIL作為這些長期運行過程中神秘響應延遲的來源。 沒有特別的理由懷疑GIL(除了它適合症狀),但其他形式的日志記錄還沒有發現任何東西,因此, 如果它很容易 ,那么擁有這些信息會很好。

我不認為有一個簡單的方法。 可能有一種尷尬的方式,包括重建Python來遍歷PyThreadState列表並在每次獲取鎖定時計算線程,但我懷疑它值得努力!

我知道這是一個推測性的問題,但如果你甚至擔心線程引起的延遲,那么轉向多處理模型而不是多線程模型可能是謹慎的。 由於流程在Python中更安全且更具可擴展性,因此如果可行的話,它們幾乎總是最佳選擇。

您現在可以使用gil_load來分析GIL使用情況。

請參閱對其他問題的回答。

暫無
暫無

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

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