日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python gil锁_python中的GIL锁

發布時間:2025/4/5 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python gil锁_python中的GIL锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

熟悉python的都知道,在C語言寫的python解釋器中存在全局解釋器鎖,由于全局解釋器鎖的存在,在同一時間內,python解釋器只能運行一個線程的代碼,這大大影響了python多線程的性能。而這個解釋器鎖由于歷史原因,現在幾乎無法消除。

python GIL 之所以會影響多線程等性能,是因為在多線程的情況下,只有當線程獲得了一個全局鎖的時候,那么該線程的代碼才能運行,而全局鎖只有一個,所以使用python多線程,在同一時刻也只有一個線程在運行,因此在即使在多核的情況下也只能發揮出單核的性能。

既然python在同一時刻下只能運行一個線程的代碼,那線程之間是如何調度的呢?

對于有io操作的線程,當一個線程在做io操作的時候,因為io操作不需要cpu,所以,這個時候,python會釋放python全局鎖,這樣其他需要運行的線程就會使用該鎖。

對于cpu密集型的線程,比如一個線程可能一直需要使用cpu做計算,那么python中會有一個執行指令的計數器,當一個線程執行了一定數量的指令時,該線程就會停止執行并讓出當前的鎖,這樣其他的線程就可以執行代碼了。

由上面可知,至少有兩種情況python會做線程切換,一是一但有IO操作時,會有線程切換,二是當一個線程連續執行了一定數量的指令時,會出現線程切換。當然此處的線程切換不一定就一定會切換到其他線程執行,因為如果當前線程 優先級比較高的話,可能在讓出鎖以后,又繼續獲得鎖,并優先執行。

在做科學計算的時候是用的單線程,因為這種計算是需要CPU一直做計算的,如果用多線程反而會降低計算速度。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的python gil锁_python中的GIL锁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。