亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python線程專題8:使用鎖的注意事項(xiàng)

phoenixsky / 1372人閱讀

摘要:上一篇文章線程專題條件變量下一篇文章線程專題線程終止與掛起使用諸如之類的鎖原語時,必須多加小心,鎖的錯誤使用很容易導(dǎo)致死鎖或相互競爭。依賴鎖的代碼應(yīng)該保證當(dāng)出現(xiàn)異常時可以正常的釋放鎖。

上一篇文章:Python線程專題7:條件變量
下一篇文章:Python線程專題9:線程終止與掛起

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

典型代碼如下:

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

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

with語句自動獲取鎖,并且在控制流離開上下文時自動釋放鎖。

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

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

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

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/42417.html

相關(guān)文章

  • Python線程專題縱覽篇

    摘要:上一篇文章進(jìn)程專題完結(jié)篇多進(jìn)程處理的一般建議下一篇文章線程專題多線程使用的必要性進(jìn)程線程進(jìn)程能夠完成多任務(wù),比如在一個電腦上可以運(yùn)行多個軟件。由于占用資源少,也使得多線程程序并發(fā)比較高。 上一篇文章:Python進(jìn)程專題完結(jié)篇:多進(jìn)程處理的一般建議下一篇文章:Python線程專題1:多線程使用的必要性 進(jìn)程VS線程 進(jìn)程:能夠完成多任務(wù),比如在一個電腦上可以運(yùn)行多個軟件。線程:也能夠...

    張紅新 評論0 收藏0
  • Python線程專題7:條件變量

    摘要:上一篇文章線程專題事件下一篇文章線程專題使用鎖的注意事項(xiàng)條件變量時構(gòu)建在另一個鎖上的同步原語,當(dāng)需要線程關(guān)注特定的狀態(tài)變化或事件發(fā)生時將使用這個鎖。 上一篇文章:Python線程專題6:事件下一篇文章:Python線程專題8:使用鎖的注意事項(xiàng) 條件變量時構(gòu)建在另一個鎖上的同步原語,當(dāng)需要線程關(guān)注特定的狀態(tài)變化或事件發(fā)生時將使用這個鎖。典型的用法是生產(chǎn)者與消費(fèi)者問題,其中一個線程生產(chǎn)的...

    Genng 評論0 收藏0
  • Python線程專題9:線程終止與掛起、實(shí)用工具函數(shù)

    摘要:上一篇文章線程專題使用鎖的注意事項(xiàng)下一篇文章線程專題多線程按順序執(zhí)行線程沒有任何方法可用于強(qiáng)制終止或掛起。實(shí)用工具函數(shù)函數(shù)名解釋返回當(dāng)前活動的對象數(shù)量。 上一篇文章:Python線程專題8:使用鎖的注意事項(xiàng)下一篇文章:Python線程專題10:queue、多線程按順序執(zhí)行 線程沒有任何方法可用于強(qiáng)制終止或掛起。這是設(shè)計上的原因,因?yàn)榫帉懢€程程序本身十分復(fù)雜。例如:如果某個線程已經(jīng)獲取...

    dunizb 評論0 收藏0
  • Python線程專題4:Timer對象、Lock對象、Rlock對象

    摘要:語法創(chuàng)建定時器對象,在秒后運(yùn)行函數(shù),和提供傳遞給的參數(shù)和關(guān)鍵字參數(shù)。在調(diào)用方法后才能啟動計定時器。如果函數(shù)還未執(zhí)行,取消定時器。否則,鎖將保持已鎖定狀態(tài)。 上一篇文章:Python線程專題3:thread對象下一篇文章:Python線程專題5:信號量與有邊界的信號量 Timer對象、Lock對象、Rlock對象 Timer對象 Timer對象用于在稍后的某個時間執(zhí)行一個函數(shù)。 語法:...

    Edison 評論0 收藏0
  • Python線程專題5:信號量與有邊界的信號量

    摘要:有邊界的信號量語法創(chuàng)建一個新的有邊界信號量。是計數(shù)器的初始值,如果忽略,將默認(rèn)為信號量與有邊界的信號量的區(qū)別的工作方式與完全相同,但操作的次數(shù)不能超過的操作次數(shù)。信號量與互斥鎖的微妙差別信號量可用于發(fā)送信號。 上一篇文章:Python線程專題4:Timer對象、Lock對象、Rlock對象下一篇文章:Python線程專題6:事件 信號量與有邊界的信號量 信號量是一個基于計數(shù)器的同步原...

    Dionysus_go 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<