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

Python線程下使用鎖的技巧分享

 更新時(shí)間:2018年09月13日 15:05:29   投稿:laozhang  
本篇文章給大家分享了Python線程下使用鎖需要注意的地方,有興趣的朋友們可以學(xué)習(xí)參考下。

使用諸如Lock、RLock、Semphore之類的鎖原語時(shí),必須多加小心,鎖的錯(cuò)誤使用很容易導(dǎo)致死鎖或相互競(jìng)爭(zhēng)。依賴鎖的代碼應(yīng)該保證當(dāng)出現(xiàn)異常時(shí)可以正常的釋放鎖。

典型代碼如下:

try:
  lock.acquire()
  #關(guān)鍵部分
  ...
finally:
  lock.release()

另外,所有種類的鎖還支持上下文管理協(xié)議(寫起來更簡(jiǎn)潔):

with語句自動(dòng)獲取鎖,并且在控制流離開上下文時(shí)自動(dòng)釋放鎖。

with lock:
  #關(guān)鍵部分
  ...

此外,編寫代碼時(shí)一般應(yīng)該避免同時(shí)獲取多個(gè)鎖,例如下面就應(yīng)該盡量避免:

這通知很統(tǒng)一導(dǎo)致應(yīng)用程序神秘死鎖,盡管與集中策略可以避免出現(xiàn)這種情況(如分層鎖定),但是最好在編寫代碼時(shí)避免這種嵌套鎖。

with lock_A:
  #關(guān)鍵部分
  ...
  with lock_B:
    #B的關(guān)鍵部分
    ...

盡管在Python中可以使用各種鎖和同步原語的組合編寫非常傳統(tǒng)的多線程程序,但有一種首推的編程方式要優(yōu)于其他所有編程方式:即將多線程程序組織為多個(gè)獨(dú)立任務(wù)的集合,這些任務(wù)之間通過消息隊(duì)列進(jìn)行通信,例如下面要講的queue模塊。

相關(guān)文章

  • Python timer定時(shí)器兩種常用方法解析

    Python timer定時(shí)器兩種常用方法解析

    這篇文章主要介紹了Python timer定時(shí)器兩種常用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Scrapy框架使用的基本知識(shí)

    Scrapy框架使用的基本知識(shí)

    今天小編就為大家分享一篇關(guān)于Scrapy框架使用的基本知識(shí),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Django 模型類(models.py)的定義詳解

    Django 模型類(models.py)的定義詳解

    這篇文章主要介紹了Django 模型類(models.py)的定義詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python機(jī)器學(xué)習(xí)pytorch?張量基礎(chǔ)教程

    python機(jī)器學(xué)習(xí)pytorch?張量基礎(chǔ)教程

    這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)pytorch?張量基礎(chǔ)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Python高級(jí)應(yīng)用探索之元編程和并發(fā)編程詳解

    Python高級(jí)應(yīng)用探索之元編程和并發(fā)編程詳解

    Python作為一種簡(jiǎn)單易用且功能強(qiáng)大的編程語言,廣泛應(yīng)用于各個(gè)領(lǐng)域,本文主要來和大家一起探索一下Python中的優(yōu)化技巧、元編程和并發(fā)編程,希望對(duì)大家有所幫助
    2023-11-11
  • django haystack實(shí)現(xiàn)全文檢索的示例代碼

    django haystack實(shí)現(xiàn)全文檢索的示例代碼

    這篇文章主要介紹了django haystack實(shí)現(xiàn)全文檢索的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • python使用jpype導(dǎo)入多個(gè)Jar的異常問題及解決

    python使用jpype導(dǎo)入多個(gè)Jar的異常問題及解決

    這篇文章主要介紹了python使用jpype導(dǎo)入多個(gè)Jar的異常問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 學(xué)習(xí)Python3 Dlib19.7進(jìn)行人臉面部識(shí)別

    學(xué)習(xí)Python3 Dlib19.7進(jìn)行人臉面部識(shí)別

    本篇文章主要給大家詳細(xì)介紹了Python3利用Dlib19.7進(jìn)行人臉面部識(shí)別的相關(guān)知識(shí),一起學(xué)習(xí)參考下吧。
    2018-01-01
  • python實(shí)現(xiàn)函數(shù)極小值

    python實(shí)現(xiàn)函數(shù)極小值

    今天小編就為大家分享一篇python實(shí)現(xiàn)函數(shù)極小值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Django 5種類型Session使用方法解析

    Django 5種類型Session使用方法解析

    這篇文章主要介紹了Django 5種類型Session使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論