91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

酒泉市| 榕江县| 永安市| 内江市| 江达县| 娱乐| 望谟县| 邵阳县| 河北省| 封开县| 陆良县| 永年县| 辰溪县| 英吉沙县| 云梦县| 泽普县| 仁化县| 通河县| 涟水县| 农安县| 扬州市| 伊通| 葵青区| 瑞昌市| 安阳市| 吴桥县| 汉阴县| 中超| 七台河市| 凭祥市| 普陀区| 肥乡县| 衡山县| 都匀市| 卢龙县| 阿图什市| 古浪县| 陆川县| 建湖县| 荣昌县| 涟水县|