python Lock.acquire(0)的作用

threading模块中的Lock为常用对象,其加锁方法acquire()有两个参数: blocking 和 timeout。blocking参数默认为True,即堵塞模式,常用acquire(1)表示。这时意味着如果是第一个线程,则加锁。如果是后面的线程,则堵塞,直到前面的线程释放锁后加锁。
如果blocking参数为False,即acquire(0)哪?说明里是说其设置为False,则如果其他线程已经获取了锁,它将不会阻塞线程,并且将返回False。 其默认值为True。
我们经常用的是acquire(1)。acquire(0)怎么使用?
经过验证,acquire(0)如果是第一个获取锁的线程,则直接加锁,返回True。如果其他线程已加锁,则返回False,同时非堵塞。这个可用于检测是否资源已加锁,根据返回的情况做不同处理。比如可再次acquire(1),进行堵塞,此时不会死锁。
如下面代码:
from threading import Lock, Thread
from time import sleep
def myget(name):
print(‘myget: ‘, name)
lock.acquire()
sleep(2)
print(’________________________’)
lock.release()
print(‘myget: over’)

def myset(name):
print(‘myset: ‘, name)
if lock.acquire(0):
sleep(3)
print(’________________________’)
lock.release()
else:
lock.acquire(1)
print(‘unblocked’)
lock.release()
print(‘myset: over’)

if name == ‘main’:
names = [‘alpha’, ‘beta’]
lock = Lock()
thread_a = Thread(target=myget, args=(names[0],))
thread_b = Thread(target=myset, args=(names[1],))

thread_a.start()
thread_b.start()thread_a.join()
print('<<<<<<<<<<<')
print(lock.locked())
thread_b.join()

运行结果为:
D:\Programs\Python\Python38-32\python.exe E:/PycharmProjects/cp/src/ch04/test_lockdead.py
myget: alpha
myset: beta


myget: over
<<<<<<<<<<<
False
unblocked
myset: over

Process finished with exit code 0

python Lock.acquire(0)的作用相关推荐

  1. Python中双冒号的作用[::]

    Python中双冒号的作用[::] Python sequence slice addresses can be written as a[start:end:step] and any of sta ...

  2. NET面试题:C#中的lock关键字有何作用

    NET面试题:C#中的lock关键字有何作用 2011-03-01 08:42:04 标签:.net面试题 .net电子书 .net教学视频 .net 更多.net面试题,.net电子书,.net教学 ...

  3. python中格式化字符串的作用_python中字符串格式化的意义(化妆)

    格式 描述 %%百分号标记 #就是输出一个% %c字符及其ASCII码 %s字符串 %d有符号整数(十进制) %u无符号整数(十进制) %o无符号整数(八进制) %x无符号整数(十六进制) %X无符号 ...

  4. 计算机语言中str是什么意思,python中str函数的作用是什么

    python中str函数的作用是什么 发布时间:2021-04-27 16:12:24 来源:亿速云 阅读:56 作者:Leah python中str函数的作用是什么?相信很多没有经验的人对此束手无策 ...

  5. python中pass语句的作用是什么_简述 Python 中 pass 语句的作用。

    [单选题]从总体中抽取的样本数据的频率分布直方图如图所示,若总体中85%的数据不超过b,则b的估计值为( ) [单选题]Graphically, competitive market supply i ...

  6. 基于Python 3.11.0版本模拟登录并爬取西安理工大学正方教务系统的学分绩点并计算

    目录 使用软件以及运行环境 对于环境的搭建 代码思路 需要导入的包 模拟登录 爬取数据 绩点计算器 功能一 功能二 完整代码 使用软件以及运行环境 win10系统,Vs Code软件,Python 3 ...

  7. python语句中end=‘ ‘的作用

    python语句中end=' '的作用 print默认是打印一行,结尾加换行.end=' '意思是末尾不换行,加空格.空格数取决于引号里面的空格数 如下举例说明: 不加end="" ...

  8. python数据分析软件0代码,python数据分析软件开发

    大家好,小编为大家解答python数据分析软件0代码的问题.很多人还不知道python数据分析处理软件,现在让我们一起来看看吧! 1.sas和python的区别 sas和python的区别: 1.成本 ...

  9. python中的双冒号作用

    Python序列切片地址可以写为[开始:结束:步长],其中的开始和结束可以省略. 1. range(n)生成[0,n)区间整数 2. 开始start省略时,默认从第0项开始 3. 结尾省略的时候,默认 ...

最新文章

  1. javascript选择器_如何通过选择正确JavaScript选择器来避免沮丧
  2. OpenCV中OrbDescriptorExtractor
  3. 人文英语学习品牌「友邻优课」携手神策数据 精细化数据分析让每一次互动都有价值
  4. 【python数据挖掘课程】二十.KNN最近邻分类算法分析详解及平衡秤TXT数据集读取
  5. 汉字笔画数据_把所有汉字叠起来会怎样?
  6. Web项目,要求:保存用户名和密码在Cookie中,下次登录不再重新输入
  7. neo4j数据浏览器_Neo4j:在Neo4j浏览器的帮助下探索新数据集
  8. JAVA知识基础(四):深入理解static关键字
  9. Kafka 学习笔记之 架构
  10. Open3d之内部形状描述子ISS
  11. C语言面试必问的经典问题(纯”gan“货)
  12. MVP架构实例讲解-登录界面
  13. matlab图片客观评价,图像质量评价(一):IQA介绍
  14. Python爬虫(第九周)
  15. Node.js web框架Clouda初接触
  16. 创建基于vue的H5
  17. 热敏电阻和压敏电阻的区别与特性
  18. 谈谈企业管理软件领域内那些很难稳定重现故障的处理技巧
  19. 华为p30应用软件开启速度测试,华为P30Pro速度测试,与iPhoneXS Max的差距,果粉无法淡定了!...
  20. Android 状态栏工具类(实现沉浸式状态栏 / 变色状态栏)

热门文章

  1. Wannafly挑战赛26 B.冥土追魂 贪心
  2. 数学建模有必要论证“合理性”吗 / 数学建模的合理性怎么写
  3. ERP有哪些系统?运用在哪些行业?
  4. Vue.js中使用vis network出现的点和线更新问题
  5. Taro小程序,底部输入框获取键盘高度动态设置bottom有延迟解决
  6. 全军出击机器人进房间_全军出击,“机器人总动员”来北京啦!
  7. Android事件分发机制收藏这一篇就够了,我先收藏为敬
  8. 科学-哲学-美学:美学(中国哲学二级学科)
  9. 投资组合分析1(ZTEHK VA ZTEA)方法2(OLS+adfuller)
  10. 使用移动设备访问电脑本地项目教程