Python有GIL為什麼還需要執行緒同步?

時間 2021-05-06 22:33:08

1樓:Leo666

一條組合語言的原子性由硬體保證;

一條python-bytecode的原子性由GIL保證;

一條python語句的執行緒安全性由執行緒鎖保證。

那為啥要有GIL? 因為python語句不是直接編譯成組合語言的,有cpython這個虛擬機器夾在中間,因此硬體無法保證python-bytecode的原子性,因此要由GIL來保證。

如果說錯了請大佬們指正。

2樓:

GIL是全域性直譯器鎖,GIL保證了在同一時間片下總有乙個Python(CPython實現)執行緒在執行。所以即使是多程序,而是順序執行的。這樣多執行緒併發就變得沒有意義。

執行緒在GIL下是有執行的時間片的

在時間片內線程如果沒有成功對資料進行操作,那麼等到下乙個時間片時,資料已經被別的執行緒修改了,那麼得到的資料就不是想要的資料了

執行緒的同步和互斥解決的是執行緒間資料的訪問正確性問題,而GIL是實現當前Python直譯器下只有乙個執行緒在執行。兩個是不同的概念。

3樓:

10 LOAD_FAST0 (x3 LOAD_CONST1 (16 BINARY_ADD7 RETURN_VALUE

參考:multithreading

只會python,還需要補上學習什麼程式語言比較好?

夢想 建議將一門語言先學精,至少要學到高階水平,如果 Python 是剛入門或者初 中級水平,建議先繼續深入學習 Python。先專一門,垂直發展,到一定程度後,就可以根據自己的興趣或實際需要,去擴充套件學習其他語言或技能。也就是先往深度發展,再往廣度發展,有自己很精很專的一套手藝後,再去擴大自己的...

信託有擔保為什麼還需要抵押?

飛天貓 固定收益信託常見的風控措施,就是擔保 質押 抵押從產品安全性的角度來說,融資方 標的質量是核心因素,信託公司的風險處理能力 信託產品的風控措施都是第二重要因素。理論上標的 融資方越好,用到後面的機會就越少。而且很多事情融資方比較好的專案,可能擔保就足夠了,但是如果同樣的專案,自然是風控越多越...

為什麼IG有the shy還需要duke

Pluto 1 他是錦鯉 2duke比the shy心態好很多 不是說shy爹心態不好而是會上頭 在和shy爹對線的所有人都應該感覺的到shy的頭硬但是這種人無外乎兩種情況 你崩或者我崩 而duke可以做到我應該能崩你但是前提是你崩不了我 你明使用者 duke很穩,theshy太過於激進了,這次ms...