【python web開發知識點整理9】-線程

線程

1.GIL鎖是什麼回事?

global interpreter lock全局解釋其所,Cpython中,對解釋器加的一把鎖,導致同一時刻同一進程中只有一個線程能夠訪問cpu,GIL鎖的出現,保證了多線程對共享數據的大部分操作,也就是類原子操作時的數據安全。但是無法避免所有修改共享數據的安全。

2.在python中是否線程安全?

不是,在Cpython解釋器中,代碼都會轉換成機器碼,即時有了GIL鎖的限制,多線程對數據的非原子性修改操作,也會因爲操作系統的對cpu時間片輪轉而導致對數據修改的不安全。

3…什麼叫做死鎖?

多道操作系統中,是指多個進程或線程在執行過程中,因爭奪資源而造成的一種互相等待的僵局現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱爲死鎖進程/線程。

4、logging模塊是否是線程安全的?

是,因爲logging模塊的寫入是追加寫

5.threading.local的作用?

創建全局ThreadLocal對象:
localVal = threading.local()
localVal.val = “Main-Thread” # 爲全局線程對象賦值
用來保存一個全局變量,只能在當前前線程中才能訪問

不同線程對其賦值,不會覆蓋,而會在自己的線程單獨創建控件來存儲這個變量

不同線程的前程變量local.val是隔離的,其他線程無法訪問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章