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. 工作67:el-table问题
  2. ionic4 引入外部字体ttf
  3. MySQL 索引失效案例
  4. 廖雪峰python学习笔记之访问数据库
  5. vs2010断点调试详细教程
  6. 音视频编解码常用知识点
  7. selenium对Alert弹框的多种处理
  8. Applet 小应用程序查看器 乱码(小方块)
  9. 菌群多样性是如何形成的,与健康的关系,如何改善?
  10. 三、自定义Abp Vnext框架代码生成模板
  11. wwwxxx域名选择(www.xxx.com或者.cn)
  12. gitlab:不能中文搜索
  13. 基于linux智能家居系统设计,基于Linux的智能家居系统设计与实现
  14. JAVA分布式医疗云平台系统开发实战第一节 open-his系统介绍
  15. HTML Tab 选项卡
  16. C: error: incompatible types when initializing type ‘int’ using type ‘atomic_t’ {aka ‘struct <anonym
  17. 记一次Redis被攻击的事件
  18. Unity3D横版过关游戏(一)
  19. 在线音乐进入“人本主义”争夺时代
  20. 电脑断开,电脑怎么断开网络连接

热门文章

  1. VFX Graph 魔法图书馆
  2. Angular官方文档学习-英雄之旅
  3. 谁动了我的隐私 — 隐私风险初探
  4. FFmpeg基础: YUV像素格式介绍和使用
  5. 通过Spring boot编写数据查询接口-----练习题
  6. 没有权限访问html,本地连接ipv4无网络访问权限解决办法
  7. 瑞芯微RK1126平台 通过http接口设置 ISP 饱和度 亮度 对比度
  8. 全球首款短视频聚合应用「酱爆视频」开发技术介绍
  9. java osta_Java语言程序设计_科泰计算机学校用户致胜口碑致远
  10. 天之骄子还是平凡之路