国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-15 22:59:10
字體:
來源:轉載
供稿:網友

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

典型代碼如下:

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

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

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

with lock:  #關鍵部分  ...

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

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

with lock_A:  #關鍵部分  ...  with lock_B:    #B的關鍵部分    ...

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 紫阳县| 中江县| 定安县| 舞阳县| 新津县| 周宁县| 临清市| 墨江| 新干县| 永年县| 城市| 正阳县| 出国| 平凉市| 永清县| 大厂| 游戏| 荆门市| 太原市| 凤翔县| 义马市| 唐海县| 长汀县| 瑞丽市| 洪洞县| 浠水县| 桃源县| 裕民县| 安仁县| 江永县| 北海市| 沈丘县| 丹巴县| 郧西县| 那曲县| 宁阳县| 宁阳县| 望城县| 望城县| 龙里县| 天等县|