線程
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是隔離的,其他線程無法訪問