亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中ThreadLocal的作用是什么

發布時間:2023-03-08 09:49:22 來源:億速云 閱讀:126 作者:iii 欄目:開發技術

這篇文章主要介紹“python中ThreadLocal的作用是什么”,在日常操作中,相信很多人在python中ThreadLocal的作用是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python中ThreadLocal的作用是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

ThreadLocal在threading模塊中,可以見得它是為我們的線程服務的。

它的主要作用是存儲當前線程的變量,各個線程之間的變量名是可以相同的,但是線程之間的變量是隔離的,也就是每個線程有自己的變量副本,互不干擾。

ThreadLocal為每個線程提供 get() 或 set() 方法來創建獨立初始化的變量副本。

ThreadLocal的工作原理可以理解為:ThreadLocal變量相當于一個字典,字典的第一個key是線程id,每個線程的變量存儲到自己id的字典里,結構可以想象成如下:

local = {
    131443: {  # 線程id
        "name": "線程1",  # 線程變量
        "age": 10,  # 線程變量
        "status": 1  # 線程變量
    }
}

看下面一個例子:

import threading

local = threading.local()


def func():
    print(f"id:{local.id},name:{local.name},num:{local.num}")


def run(num):
    local.id = threading.current_thread().ident
    local.name = threading.current_thread().name
    local.num = num
    func()


if __name__ == "__main__":
    t1 = threading.Thread(target=run, args=(1,))
    t2 = threading.Thread(target=run, args=(2,))

    t1.start()
    t2.start()
    t1.join()
    t2.join()

執行結果如下:

id:13022343168,name:Thread-1,num:1
id:13039132672,name:Thread-2,num:2

可以看到,在線程里,我們可以直接使用local點來獲取各自的變量,每個線程的變量是隔離的。

那么ThreadLocal有什么用呢?

  • 線程間的數據隔離

  • 進行事務操作,存儲線程事務信息

  • 數據庫連接、Session會話管理

  • 在進行對象跨層傳遞時,打破層次間的約束

例如Flask中請求上下文對象,就是對ThreadLocal進一步封裝,它能夠存儲每個請求的請求參數和其他變量,各請求線程之間數據隔離。

到此,關于“python中ThreadLocal的作用是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌吉市| 嘉善县| 肃北| 澎湖县| 响水县| 大安市| 武汉市| 苍山县| 安阳市| 永和县| 攀枝花市| 寿光市| 德兴市| 吉木萨尔县| 平果县| 哈密市| 调兵山市| 宣汉县| 西贡区| 湾仔区| 容城县| 新密市| 东源县| 北流市| 华容县| 青川县| 佛冈县| 将乐县| 利津县| 陈巴尔虎旗| 夏邑县| 霍山县| 深州市| 同心县| 连城县| 霸州市| 修武县| 赤城县| 涟源市| 庐江县| 南江县|