欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python threading.local代碼實例及原理解析

 更新時間:2020年03月16日 13:43:31   作者:楓飛飛  
這篇文章主要介紹了Python threading.local代碼實例及原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Python的線程操作在舊版本中使用的是thread模塊,在Python27和Python3中引入了threading模塊,同時thread模塊在Python3中改名為_thread模塊,threading模塊相較于thread模塊,對于線程的操作更加的豐富,而且threading模塊本身也是相當于對thread模塊的進一步封裝而成,thread模塊有的功能threading模塊也都有,所以涉及到對線程的操作,推薦使用threading模塊。

threading模塊中包含了關于線程操作的豐富功能,包括:常用線程函數,線程對象,鎖對象,遞歸鎖對象,事件對象,條件變量對象,信號量對象,定時器對象,柵欄對象。代碼如下

#coding = utf - 8
import threading# 創(chuàng)建全局ThreadLocal對象:
	localVal = threading.local()
localVal.val = "Main-Thread"
def process_student():
	print '%s (in %s)' % (localVal.val,
		threading.current_thread().name)
def process_thread(name): #賦值
localVal.val = name
process_student()
t1 = threading.Thread(target =
	process_thread, args = ('One', ),
	name = 'Thread-A')
t2 = threading.Thread(target =
	process_thread, args = ('Two', ),
	name = 'Thread-B')
t1.start()
t2.start()
t1.join()
t2.join()
print localVal.val

打印結果:

One (in Thread-A)
Two (in Thread-B)
Main-Thread

threading.local()這個方法的特點用來保存一個全局變量,但是這個全局變量只有在當前線程才能訪問,

localVal.val = name這條語句可以儲存一個變量到當前線程,如果在另外一個線程里面再次對localVal.val進行賦值,

那么會在另外一個線程單獨創(chuàng)建內存空間來存儲,也就是說在不同的線程里面賦值 不會覆蓋之前的值,因為每個

線程里面都有一個單獨的空間來保存這個數據,而且這個數據是隔離的,其他線程無法訪問

這個東西可以用在那些地方呢,比如下載,現在都是多線程下載了,就像酷狗那樣,可以同時下載很多首歌曲,那么

就可以利用這個方法來保存每個下載線程的數據,比如下載進度,下載速度之類的

所以 如果你在開發(fā)多線程應用的時候 需要每個線程保存一個單獨的數據供當前線程操作,可以考慮使用這個方法,簡單有效

其實這樣的功能還有很多種方法可以實現,比如我們在主線程實例化一個dict對象,然后用線程的名字作為key,因為線程之間可以共享數據,

所以也可以實現相同功能,并且靈活性更多,不過代碼就沒那么優(yōu)雅簡潔了

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python判斷字符串或者集合是否為空的實例

    python判斷字符串或者集合是否為空的實例

    今天小編就為大家分享一篇python判斷字符串或者集合是否為空的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 合并百度影音的離線數據( with python 2.3)

    合并百度影音的離線數據( with python 2.3)

    這篇文章主要介紹了合并百度影音的離線數據( with python 2.3)的相關資料
    2015-08-08
  • python3.6+django2.0+mysql搭建網站過程詳解

    python3.6+django2.0+mysql搭建網站過程詳解

    這篇文章主要介紹了python3.6+django2.0+mysql搭建網站過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python使用數字與字符串方法技巧

    python使用數字與字符串方法技巧

    這篇文章主要介紹了python使用數字與字符串方法技巧,文章內容介紹詳細具有一的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • Python?class類@staticmethod及@classmethod區(qū)別淺析

    Python?class類@staticmethod及@classmethod區(qū)別淺析

    這篇文章主要為大家介紹了Python?class類@staticmethod及@classmethod區(qū)別淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Python3控制路由器——使用requests重啟極路由.py

    Python3控制路由器——使用requests重啟極路由.py

    通過本文給大家介紹Python3控制路由器——使用requests重啟極路由.py的相關知識,代碼寫了相應的注釋,以后再寫成可以方便調用的模塊,感興趣的朋友一起學習吧
    2016-05-05
  • Pytorch 數據加載與數據預處理方式

    Pytorch 數據加載與數據預處理方式

    今天小編就為大家分享一篇Pytorch 數據加載與數據預處理方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python向excel中寫入數據的方法

    Python向excel中寫入數據的方法

    這篇文章主要介紹了Python向excel中寫入數據,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 一些讓Python代碼簡潔的實用技巧總結

    一些讓Python代碼簡潔的實用技巧總結

    隨著項目代碼行數的增加,不可避免的遇到軟件架構腐敗的問題,所以如何寫出簡潔的代碼至關重要,這篇文章主要給大家介紹了一些讓Python代碼簡潔的實用技巧,需要的朋友可以參考下
    2021-08-08
  • pycharm遠程調試openstack的圖文教程

    pycharm遠程調試openstack的圖文教程

    這篇文章主要為大家詳細介紹了pycharm遠程調試openstack的圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評論