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