Python 本地執行緒

2022-05-19 14:54:48 字數 1338 閱讀 4400

import

threading

import

time

class

a():

pass

a=a()

deffunc(num):

a.name=num

time.sleep(1)

print(a.name,threading.current_thread().name)

結果

d:\virtualenv\envs\vuedjango\scripts\python.exe d:/test/flasktest/flaskpro3/本地執行緒.py

4執行緒1

4執行緒0

4執行緒3

4執行緒2

4執行緒4

process finished with exit code 0

import

threading

import

time

#本地執行緒物件

local_values =threading.local()

deffunc(num):

"""# 第乙個執行緒進來,本地執行緒物件會為他建立乙個

# 第二個執行緒進來,本地執行緒物件會為他建立乙個

,執行緒2的唯一標識:,

}#注意這裡是我自己假設的

:param num:

:return:

"""local_values.name =num

#執行緒停下來了

time.sleep(2)

#第二個執行緒: local_values.name,去local_values中根據自己的唯一標識作為key,獲取value中name對應的值

print

(local_values.name, threading.current_thread().name)

for i in range(5):

th = threading.thread(target=func, args=(i,), name='

執行緒%s

'%i)

th.start()

結果

1執行緒1

0 執行緒0

3執行緒3

2執行緒2

4 執行緒4

使用本地執行緒,每次執行緒進來後(執行函式),都會建立乙個當前執行緒的唯一標識,並把本地執行緒的值儲存起來,形成一一對應的關係,後面即使執行緒等待了,也不會全部將值變成最後乙個,當然執行緒執行順序不能確定,但是它對應的值肯定是他執行函式時她的唯一標識所對應的值

參考flask上下文原始碼就知道他就是為每個執行緒建立唯一標識,這裡參考她的原始碼把本地執行緒的結構設計的和她的一樣

flask本地執行緒與Local

1.我在寫乙個部落格 的時候,當乙個使用者註冊了賬號資訊的時候會傳送一封郵件到郵箱讓使用者來確認,我發現其中有乙個問題就是當請求來時一次只能傳送一封郵件,所以在傳送多封郵件時會耗費很多的時間,這時候就需要多執行緒技術,當然了在處理http請求的伺服器也是這樣的,當我們自己寫的程式在面臨大量的使用者同...

本地執行緒變數(四) FastThreadLocal

四 總結 一 背景 因為需要,研究了可以通過inheritablethreadlocal進行父子執行緒中如何傳遞本地執行緒變數,通過阿里開源專案transmitablethreadlocal進行進行執行緒池傳遞本地執行緒變數 詳解可檢視以往部落格 在查詢資料的過程中無意發現了dobbo的intern...

flask 本地執行緒 請求上下文補充

context 上下文 是flask裡面非常好的設計,使用flask需要非常理解應用上下文和請求上下文這兩個概念 本地執行緒 本地執行緒的實現原理就是 在threading.current thread dict 裡新增乙個包含物件mydata的id值的key,來儲存不同的執行緒狀態werkzeug...