全局解釋器鎖是計算機程序設(shè)計語言解釋器用于同步線程的工具,使得在同一進程內(nèi)任何時刻僅有一個線程在執(zhí)行,常見的有CPython、RubyMRI。那么什么是Python全局解釋器鎖(GIL)?以下是詳細(xì)的內(nèi)容介紹。
每個CPU在同一時間只能執(zhí)行一個線程,那么其他的線程就必須等待該線程的全局解釋器,使用權(quán)消失后才能使用全局解釋器,即使多個線程直接不會相互影響在同一個進程下也只有一個線程使用CPU,這樣的機制稱為全局解釋器鎖(GIL)。GIL的設(shè)計簡化了CPython的實現(xiàn),使得對象模型包括關(guān)鍵的內(nèi)建類型,如:字典等,都是隱含的,可以并發(fā)訪問的,鎖住全局解釋器使得比較容易的實現(xiàn)對多線程的支持,但也損失了多處理器主機的并行計算能力。
Python全局解釋器鎖(GIL)是一種互斥鎖或鎖,僅允許一個線程持有Python解釋器的控制權(quán)。
全局解釋器鎖的好處
1、避免了大量的加鎖解鎖的好處;
2、使數(shù)據(jù)更加安全,解決多線程間的數(shù)據(jù)完整性和狀態(tài)同步。
全局解釋器鎖的劣勢
多核處理器退化成單核處理器,只能并發(fā)不能并行。
Python全局解釋器鎖(GIL)的作用
多線程情況下必須存在資源的競爭,GIL是為了保證在解釋器級別的線程唯一使用共享資源(cpu)。
以上內(nèi)容為大家介紹了什么是Python全局解釋器鎖(GIL),希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。http://www.em-kal.com/