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

python使用鎖訪問共享變量實例解析

 更新時間:2018年02月08日 15:34:14   作者:零丁若嘆  
這篇文章主要介紹了python使用鎖訪問共享變量實例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是python使用鎖訪問共享變量,具體介紹和實現(xiàn)如下。

python 做多線程編程時,多個線程若同時訪問某個變量,可能會對變量數(shù)據(jù)造成破壞,pyhon中的threading模塊提供了lock對象,lock中的acquire方法用于獲取一個鎖,而release用于釋放一個鎖。當一個線程取得鎖時,它變獲得了共享變量的訪問權(quán),此時進入阻塞狀態(tài),若其它線程申請訪問這個變量,則必須等到這個線程調(diào)用release方法釋放這個鎖。下面是python中使用鎖的實例:

#!/usr/bin/env python 
import threading,time 
q=threading.Lock()  #create a lock object 
def mythread(): 
  global a 
  q.acquire()   #acquire the lock 
  a=threading.currentThread().getName() 
  print "a is modified by",a 
  q.release()   #release the lock 
   
for i in range(1,4): 
  t=threading.Thread(target=mythread,name="Thread %d"%i) 
  t.start() 

如果一個線程想多次獲取資源訪問權(quán),在上面的程序中連續(xù)兩次使用acquire() ,將會造成死鎖現(xiàn)象,因為第一次申請到的資源還沒有來得及釋放,就進行了第二次申請。python中的threading模塊提供了可重入鎖RLock,RLock提供了計數(shù)器。一個線程申請到某個資源,計數(shù)器會加1,釋放掉這個資源計數(shù)器會減1.這樣,一個線程可以多次請求同一個資源,在所有請求都被釋放后,其它線程才允許獲取這個鎖。上面的代碼做簡單修改,可得:

#!/usr/bin/env python 
import threading,time 
q=threading.RLock()    #create a lock object 
def mythread(): 
  global a 
  q.acquire()    #acquire the lock 
  a=threading.currentThread().getName() 
  print "a is modified by",a 
  q.acquire() 
  a=threading.currentThread().getName() 
  print "a is modified by %s the second time"% a 
  q.release()    
  q.release()    #release the lock 
for i in range(1,4): 
  t=threading.Thread(target=mythread,name="Thread %d"%i) 
  t.start() 

總結(jié)

以上就是本文關(guān)于python使用鎖訪問共享變量實例解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • pytorch動態(tài)神經(jīng)網(wǎng)絡(luò)(擬合)實現(xiàn)

    pytorch動態(tài)神經(jīng)網(wǎng)絡(luò)(擬合)實現(xiàn)

    這篇文章主要介紹了pytorch動態(tài)神經(jīng)網(wǎng)絡(luò)(擬合)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python tkinter中的錨點(anchor)問題及處理

    python tkinter中的錨點(anchor)問題及處理

    這篇文章主要介紹了python tkinter中的錨點(anchor)問題及處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Python輕松獲取網(wǎng)絡(luò)時間和本地時間技巧揭秘

    Python輕松獲取網(wǎng)絡(luò)時間和本地時間技巧揭秘

    這篇文章主要為大家介紹了Python輕松獲取網(wǎng)絡(luò)時間和本地時間技巧揭秘,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • python適合做數(shù)據(jù)挖掘嗎

    python適合做數(shù)據(jù)挖掘嗎

    在本篇文章里小編給各位分享的是一篇關(guān)于python做數(shù)據(jù)挖掘的相關(guān)知識點內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • pandas?groupby?用法實例詳解

    pandas?groupby?用法實例詳解

    在日常數(shù)據(jù)分析過程中,經(jīng)常有分組的需求。具體來說,就是根據(jù)一個或者多個字段,將數(shù)據(jù)劃分為不同的組,然后進行進一步分析,比如求分組的數(shù)量,分組內(nèi)的最大值最小值平均值等,下面我們就來看看pandas中的groupby怎么使用,需要的朋友可以參考下
    2022-11-11
  • python機器學(xué)習(xí)混淆矩陣及confusion?matrix函數(shù)使用

    python機器學(xué)習(xí)混淆矩陣及confusion?matrix函數(shù)使用

    這篇文章主要為大家介紹了python機器學(xué)習(xí)混淆矩陣confusion_matrix函數(shù)使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Python辦公自動化PPT批量轉(zhuǎn)換操作

    Python辦公自動化PPT批量轉(zhuǎn)換操作

    本文介紹如何使用 python 操作 PPT,用到的模塊就是 python-pptx,以下的示例基本滿足日常需求,如果要知道更多,可以訪問 python-pptx 的官方文檔
    2021-09-09
  • Python基礎(chǔ) while循環(huán)與break、continue關(guān)鍵字

    Python基礎(chǔ) while循環(huán)與break、continue關(guān)鍵字

    今天再帶著大家講述一下while循環(huán)。那么for循環(huán)和while循環(huán),到底有什么區(qū)別呢?下面文章就來詳細介紹,感興趣的小伙伴可以參考一下
    2021-10-10
  • Python之is與==的區(qū)別詳解

    Python之is與==的區(qū)別詳解

    這篇文章主要介紹了Python之is與==的區(qū)別詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Pytorch如何把Tensor轉(zhuǎn)化成圖像可視化

    Pytorch如何把Tensor轉(zhuǎn)化成圖像可視化

    這篇文章主要介紹了Pytorch如何把Tensor轉(zhuǎn)化成圖像可視化問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論