最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解python中的ThreadLocal

 更新時(shí)間:2023年03月08日 08:30:58   作者:一根頭發(fā)學(xué)一年  
本文主要介紹了深入理解python中的ThreadLocal,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

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

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

ThreadLocal的工作原理可以理解為:ThreadLocal變量相當(dāng)于一個(gè)字典,字典的第一個(gè)key是線程id,每個(gè)線程的變量存儲(chǔ)到自己id的字典里,結(jié)構(gòu)可以想象成如下:

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

看下面一個(gè)例子:

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()

執(zhí)行結(jié)果如下:

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

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

那么ThreadLocal有什么用呢?

  • 線程間的數(shù)據(jù)隔離
  • 進(jìn)行事務(wù)操作,存儲(chǔ)線程事務(wù)信息
  • 數(shù)據(jù)庫連接、Session會(huì)話管理
  • 在進(jìn)行對(duì)象跨層傳遞時(shí),打破層次間的約束

例如Flask中請(qǐng)求上下文對(duì)象,就是對(duì)ThreadLocal進(jìn)一步封裝,它能夠存儲(chǔ)每個(gè)請(qǐng)求的請(qǐng)求參數(shù)和其他變量,各請(qǐng)求線程之間數(shù)據(jù)隔離。

到此這篇關(guān)于深入理解python中的ThreadLocal的文章就介紹到這了,更多相關(guān)python中的ThreadLocal內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SublimeText 2編譯python出錯(cuò)的解決方法(The system cannot find the file specified)

    SublimeText 2編譯python出錯(cuò)的解決方法(The system cannot find the file

    這篇文章主要介紹了SublimeText 2編譯python報(bào)The system cannot find the file specified錯(cuò)誤的解決方法,大家參考使用吧
    2013-11-11
  • Python導(dǎo)入模塊時(shí)遇到的錯(cuò)誤分析

    Python導(dǎo)入模塊時(shí)遇到的錯(cuò)誤分析

    這篇文章主要給大家詳細(xì)解釋了在Python處理導(dǎo)入模塊的時(shí)候出現(xiàn)錯(cuò)誤以及具體的情況分析,非常的詳盡,有需要的小伙伴可以參考下
    2017-08-08
  • Django?ORM?事務(wù)和查詢優(yōu)化的操作方法

    Django?ORM?事務(wù)和查詢優(yōu)化的操作方法

    這篇文章主要介紹了Django?ORM?事務(wù)和查詢優(yōu)化,包括事務(wù)操作、ORM 惰性查詢及only與defer相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • python的setattr函數(shù)實(shí)例用法

    python的setattr函數(shù)實(shí)例用法

    在本篇文章里小編給大家整理了一篇關(guān)于python的setattr函數(shù)實(shí)例用法的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2020-12-12
  • python保留兩位小數(shù)的五種方法

    python保留兩位小數(shù)的五種方法

    很多小伙伴在學(xué)習(xí)python的時(shí)候可能會(huì)遇到對(duì)數(shù)據(jù)進(jìn)行格式化輸出的需求,其中最常見的需求為:保留幾位小數(shù),今天小編就以python怎么保留兩位小數(shù)為例,來介紹一下python數(shù)據(jù)格式化的方法,需要的朋友可以參考下
    2024-08-08
  • python數(shù)組排序方法之sort、sorted和argsort詳解

    python數(shù)組排序方法之sort、sorted和argsort詳解

    這篇文章主要給大家介紹了關(guān)于python數(shù)組排序方法之sort、sorted和argsort的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • PyCharm 在Windows的有用快捷鍵詳解

    PyCharm 在Windows的有用快捷鍵詳解

    這篇文章主要介紹了PyCharm 在Windows的有用快捷鍵,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • PyQt5 文本輸入框自動(dòng)補(bǔ)全QLineEdit的實(shí)現(xiàn)示例

    PyQt5 文本輸入框自動(dòng)補(bǔ)全QLineEdit的實(shí)現(xiàn)示例

    這篇文章主要介紹了PyQt5 文本輸入框自動(dòng)補(bǔ)全QLineEdit的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 詳解python持久化文件讀寫

    詳解python持久化文件讀寫

    這篇文章主要介紹了python持久化文件讀寫,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python如何將圖片轉(zhuǎn)換素描畫

    python如何將圖片轉(zhuǎn)換素描畫

    這篇文章主要介紹了python如何將圖片轉(zhuǎn)換素描畫,幫助大家更好的用python處理圖片,感興趣的朋友可以了解下
    2020-09-09

最新評(píng)論

丹巴县| 沂南县| 曲靖市| 涿州市| 酉阳| 奉贤区| 讷河市| 惠州市| 韶山市| 临沧市| 本溪市| 井冈山市| 琼中| 南投市| 屏东县| 霍城县| 合水县| 年辖:市辖区| 平定县| 靖远县| 西宁市| 田东县| 张掖市| 常宁市| 西藏| 英吉沙县| 菏泽市| 句容市| 科技| 沧州市| 泾源县| 东丰县| 南涧| 贵港市| 延川县| 合阳县| 张家口市| 桂东县| 文成县| 治多县| 教育|