flask的執行緒隔離

2022-09-09 11:15:15 字數 716 閱讀 3202

執行緒隔離的原理就是通過字典儲存資料,每乙個執行緒都將自己的執行緒號作為key,request請求物件的返回值作為value

werkzeug庫裡面的local模組封裝了乙個local物件,基於字典實現的執行緒隔離物件

import

threading

import

time

from werkzeug.local import

local

obj =local()

obj.b = 1

defworker_1():

obj.b = 2

print('

current thread b is:

' +str(obj.b))

new_task = threading.thread(target=worker_1)

new_task.start()

time.sleep(1)

print('

main thread b is:

' + str(obj.b))

輸出結果:

current thread b is:2main thread b 

is:1

不用在意它是如何封裝成乙個執行緒隔離物件的細節,直接就可以使用

使用執行緒隔離的意義:

使用當前執行緒能夠正確引用到他自己所建立的物件,而不是引用到其他執行緒建立的物件

Flask中的執行緒隔離原理

python因為gil 全域性直譯器鎖 的原因,本身實現的多執行緒就是偽多執行緒,同一時間只能有乙個cpu核執行乙個python應用,這裡就有人覺得python的多執行緒沒有用。這裡可以這樣理解 其實應用分為兩種,一種是cpu運算密集的應用,一種是io密集的應用,顧名思義,前者是比較依賴cpu資源,...

六十九 flask上下文之執行緒隔離的g物件的使用

儲存全域性物件的g物件 g物件是在整個flask應用執行期間都是可以使用的,並且也是和request一樣,是執行緒隔離的,這個物件是專門用來存放開發者自己定義的一些資料,方便在整個flask程式中都可以使用,一般使用就是將一些經常會用到的資料繫結到上面,以後就直接從g上面取就可以了,而不需要通過傳參...

local執行緒隔離物件

為什麼要執行緒隔離 因為有請求的併發的時候,伺服器不知道哪個是哪個。local執行緒隔離的原理 有多組請求的時候,local將執行緒分割成多個子執行緒,每個子執行緒處理成字典,然後再分發給伺服器。可以處理的物件有 request session g 等。示例 encoding utf 8 from ...