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

首頁 > 編程 > Python > 正文

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

2020-01-04 14:32:28
字體:
來源:轉載
供稿:網友

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

典型代碼如下:

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

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

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

with lock:  #關鍵部分  ...

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

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

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

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


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 揭阳市| 宜兴市| 清水河县| 中卫市| 常山县| 泽州县| 嵊州市| 南康市| 威信县| 无为县| 吉林市| 上林县| 巨野县| 青海省| 林州市| 白山市| 长乐市| 福州市| 顺昌县| 宜宾市| 黄平县| 永安市| 咸宁市| 柘城县| 商水县| 商都县| 天峨县| 五常市| 长汀县| 静乐县| 太谷县| 施甸县| 荔波县| 丁青县| 香格里拉县| 大关县| 静宁县| 长兴县| 河北区| 仁布县| 普兰店市|