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

對python多線程中互斥鎖Threading.Lock的簡單應(yīng)用詳解

 更新時間:2019年01月11日 11:20:23   作者:AutomationTesting  
今天小編就為大家分享一篇對python多線程中互斥鎖Threading.Lock的簡單應(yīng)用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一、線程共享進(jìn)程資源

每個線程互相獨(dú)立,相互之間沒有任何關(guān)系,但是在同一個進(jìn)程中的資源,線程是共享的,如果不進(jìn)行資源的合理分配,對數(shù)據(jù)造成破壞,使得線程運(yùn)行的結(jié)果不可預(yù)期。這種現(xiàn)象稱為“線程不安全”。

實例如下:

#-*- coding: utf-8 -*-
import threading
import time
 
def test_xc():
  f = open("test.txt","a")
  f.write("test_dxc"+'\n')
  time.sleep(1)
  f.close()
 
if __name__ == '__main__':
  for i in xrange(5):
    t = threading.Thread(target=test_xc)
    t.start()

結(jié)果展示:

python多線程中互斥鎖Threading.Lock

二、互斥鎖同步

線程同步能夠保證多個線程安全訪問競爭資源,最簡單的同步機(jī)制是引入互斥鎖?;コ怄i為資源引入一個狀態(tài):鎖定/非鎖定。某個線程要更改共享數(shù)據(jù)時,先將其鎖定,此時資源的狀態(tài)為“鎖定”,其他線程不能更改;直到該線程釋放資源,將資源的狀態(tài)變成“非鎖定”,其他的線程才能再次鎖定該資源?;コ怄i保證了每次只有一個線程進(jìn)行寫入操作,從而保證了多線程情況下數(shù)據(jù)的正確性。

threading模塊中定義了Lock類,可以方便的處理鎖定:

#創(chuàng)建鎖
mutex = threading.Lock()
#鎖定
mutex.acquire([timeout])#timeout是超時時間
#釋放
mutex.release()

其中,鎖定方法acquire可以有一個超時時間的可選參數(shù)timeout。如果設(shè)定了timeout,則在超時后通過返回值可以判斷是否得到了鎖,從而可以進(jìn)行一些其他的處理。

三、使用線程鎖

<pre name="code" class="python">#-*- coding: utf-8 -*-
import threading
import time
 
def test_xc():
  f = open("test.txt","a")
  f.write("test_dxc"+'\n')
  time.sleep(1)
  mutex.acquire()#取得鎖
  f.close()
  mutex.release()#釋放鎖
 
if __name__ == '__main__':
  mutex = threading.Lock()#創(chuàng)建鎖
  for i in xrange(5):
    t = threading.Thread(target=test_xc)
    t.start()

運(yùn)行結(jié)果

python多線程中互斥鎖Threading.Lock

以上這篇對python多線程中互斥鎖Threading.Lock的簡單應(yīng)用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實現(xiàn)的企業(yè)粉絲抽獎功能示例

    Python實現(xiàn)的企業(yè)粉絲抽獎功能示例

    這篇文章主要介紹了Python實現(xiàn)的企業(yè)粉絲抽獎功能,涉及Python數(shù)值運(yùn)算與隨機(jī)數(shù)生成相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • 利用pyinstaller將py文件打包為exe的方法

    利用pyinstaller將py文件打包為exe的方法

    本篇文章主要介紹了利用pyinstaller將py文件打包為exe的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Python3非對稱加密算法RSA實例詳解

    Python3非對稱加密算法RSA實例詳解

    這篇文章主要介紹了Python3非對稱加密算法RSA,結(jié)合實例形式分析了Python3 RSA加密相關(guān)模塊安裝及使用操作技巧,需要的朋友可以參考下
    2018-12-12
  • Python學(xué)習(xí)筆記之解析json的方法分析

    Python學(xué)習(xí)筆記之解析json的方法分析

    這篇文章主要介紹了Python解析json的方法,結(jié)合實例形式分析了常見的Python解析與轉(zhuǎn)換json格式數(shù)據(jù)相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • Flask框架重定向,錯誤顯示,Responses響應(yīng)及Sessions會話操作示例

    Flask框架重定向,錯誤顯示,Responses響應(yīng)及Sessions會話操作示例

    這篇文章主要介紹了Flask框架重定向,錯誤顯示,Responses響應(yīng)及Sessions會話操作,結(jié)合實例形式分析了flask框架中重定向,錯誤顯示,Responses響應(yīng)及Sessions會話操作相關(guān)使用技巧與操作注意事項,需要的朋友可以參考下
    2019-08-08
  • 詳解python中return和print的區(qū)別和用途

    詳解python中return和print的區(qū)別和用途

    在 Python 中,return 和 print 是兩種常見的語句,用于在函數(shù)中輸出信息或返回值,盡管它們看起來相似,但它們有不同的作用和用法,本文將詳細(xì)介紹 return 和 print 在函數(shù)中的區(qū)別,并提供豐富的示例代碼,以幫助你更好地理解它們的用途
    2023-11-11
  • python繪制三維圖的詳細(xì)新手教程

    python繪制三維圖的詳細(xì)新手教程

    通常我們用 Python 繪制的都是二維平面圖,但有時也需要繪制三維場景圖,下面這篇文章主要給大家介紹了關(guān)于python繪制三維圖的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • python線程定時器Timer實現(xiàn)原理解析

    python線程定時器Timer實現(xiàn)原理解析

    這篇文章主要介紹了python線程定時器Timer實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • python基礎(chǔ)知識之字典(Dict)

    python基礎(chǔ)知識之字典(Dict)

    這篇文章主要介紹了python基礎(chǔ)知識之字典(Dict)的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • pytorch?plt.savefig()的用法及保存路徑

    pytorch?plt.savefig()的用法及保存路徑

    這篇文章主要給大家介紹了關(guān)于pytorch?plt.savefig()的用法及保存路徑的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-01-01

最新評論