电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解Python中的Lock和Rlock

瀏覽:3日期:2022-06-29 10:14:39

線程是進程中可以調度執行的實體。而且,它是操作系統中可以執行的最小處理單元。簡單地說,一個線程就是一個程序中可以獨立于其他代碼執行的指令序列。為了簡單起見,你可以假設線程只是進程的子集!

Locks

鎖是Python中用于同步的最簡單的方式。鎖有兩種狀態:上鎖、釋放鎖。

鎖是線程模塊中的一個類,有兩個主要方法:acquire()和release() 當調用acquire()方法時,它鎖定鎖的執行并阻塞鎖的執行,直到其他線程調用release()方法將其設置為解鎖狀態。鎖幫助我們有效地訪問程序中的共享資源,以防止數據損壞,它遵循互斥,因為一次只能有一個線程訪問特定的資源。

讓我們看看下面的例子來理解鎖的使用:

import threading #創建一個lock對象lock = threading.Lock() #初始化共享資源abce = 0 def sumOne(): global abce #鎖定共享資源 lock.acquire() abce = abce + 1 #釋放共享資源 lock.release() def sumTwo(): global abce #鎖定共享資源 lock.acquire() abce = abce + 2 #釋放共享資源 lock.release() #調用函數 sumOne()sumTwo()print(abce)

在上面的程序中,lock是一個鎖對象,全局變量abce是一個共享資源,sumOne()和sumTwo()函數扮作兩個線程,在sumOne()函數中共享資源abce首先被鎖定,然后增加了1,然后abce被釋放。sumTwo()函數執行類似操作。 兩個函數sumOne()和sumTwo()不能同時訪問共享資源abce,一次只能一個訪問共享資源。

RLocks

默認的lock不能識別lock當前被哪個線程持有。如果任何線程正在訪問共享資源,那么試圖訪問共享資源的其他線程將被阻塞,即使鎖定共享資源的線程也是如此。 在這些情況下,可重入鎖(或RLock)用于防止訪問共享資源時出現不必要的阻塞。如果共享資源在RLock中,那么可以安全地再次調用它。 RLocked資源可以被不同的線程重復訪問,即使它在被不同的線程調用時仍然可以正常工作。

讓我們看看下面的例子來理解RLocks的使用:

import threading #創建一個lock對象lock = threading.Lock() #初始化共享資源abce = 0 #本線程訪問共享資源lock.acquire()abce = abce + 1 #這個線程訪問共享資源會被阻塞lock.acquire()abce = abce + 2lock.release() print(abce)

在上面的程序中,兩個線程同時嘗試訪問共享資源abce,這里當一個線程當前正在訪問共享資源abce時,另一個線程將被阻止訪問它。 當兩個或多個線程試圖訪問相同的資源時,有效地阻止了彼此訪問該資源,這就是所謂的死鎖,因此上述程序沒有生成任何輸出。

但是,在程序中上述問題可以通過使用RLock來解決。

import threading #創建一個rlock對象lock = threading.RLock() #初始化共享資源abce = 0 #本線程訪問共享資源lock.acquire()abce = abce + 1 #這個線程嘗試訪問共享資源lock.acquire()abce = abce + 2lock.release() print(abce)

在這里,沒有阻止程序中的線程訪問共享資源abce。 對于RLock對象鎖的每個acquire(),我們需要調用release()一次。

從上面提到的眾多程序和解釋中,在Python中一個Lock對象和一個RLock對象有很多區別:

locks rlocks lock對象無法再被其他線程獲取,除非持有線程釋放 rlock對象可以被其他線程多次獲取 lock對象可被任何線程釋放 rlock對象只能被持有的線程釋放 lock對象不可以被任何線程擁有 rlock對象可以被多個線程擁有 對一個對象鎖定是很快的 對一個對象加rlock比加lock慢

以上就是詳解Python中的Lock和Rlock的詳細內容,更多關于Python中Lock和Rlock的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 石家庄小程序开发_小程序开发公司_APP开发_网站制作-石家庄乘航网络科技有限公司 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 杭州中央空调维修_冷却塔/新风机柜/热水器/锅炉除垢清洗_除垢剂_风机盘管_冷凝器清洗-杭州亿诺能源有限公司 | 奥运星-汽车性能网评-提供个性化汽车资讯| 太空舱_民宿太空舱厂家_移动房屋太空舱价格-豪品建筑 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | ge超声波测厚仪-电动涂膜机-电动划格仪-上海洪富 | 大白菜官网,大白菜winpe,大白菜U盘装系统, u盘启动盘制作工具 | 换链神器官网-友情链接交换、购买交易于一体的站长平台 | YT保温材料_YT无机保温砂浆_外墙保温材料_南阳银通节能建材高新技术开发有限公司 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 陕西安玻璃自动感应门-自动重叠门-磁悬浮平开门厂家【捷申达门业】 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 工业硝酸钠,硝酸钠厂家-淄博「文海工贸」 | 湖南自考_湖南自学考试网 | 博莱特空压机|博莱特-阿特拉斯独资空压机品牌核心代理商 | 旋片真空泵_真空泵_水环真空泵_真空机组-深圳恒才机电设备有限公司 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 曙光腾达官网-天津脚手架租赁-木板架出租-移动门式脚手架租赁「免费搭设」 | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 通风气楼_通风天窗_屋顶风机-山东美创通风设备有限公司 | 粒米特测控技术(上海)有限公司-测功机_减速机测试台_电机测试台 | 石膏基自流平砂浆厂家-高强石膏基保温隔声自流平-轻质抹灰石膏粉砂浆批发-永康市汇利建设有限公司 | 冰晶石|碱性嫩黄闪蒸干燥机-有机垃圾烘干设备-草酸钙盘式干燥机-常州市宝康干燥 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 谈股票-今日股票行情走势分析-牛股推荐排行榜 | 广州云仓代发-昊哥云仓专业电商仓储托管外包代发货服务 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 发电机价格|发电机组价格|柴油发电机价格|柴油发电机组价格网 | 鄂泉泵业官网|(杭州、上海、全国畅销)大流量防汛排涝泵-LW立式排污泵 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | 慈溪麦田广告公司,提供慈溪广告设计。 | 周口市风机厂,周鼓风机,河南省周口市风机厂 | 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 |