网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

在Python定时器中Lock的实际应用方式介绍

这篇文章主要讲解了“在Python定时器中Lock的实际应用方式介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在Python定时器中Lock的实际应用方式介绍”吧!

成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、成都做网站、沂南网络推广、成都小程序开发、沂南网络营销、沂南企业策划、沂南品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供沂南建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

在Python定时器中Lock的实际应用

Lock/RLock 和 C# lock 关键字差不多意思。不同的是,Lock/RLock 只需 "锁定" 自己,而 C# lock 还得另外找个引用类型对象。Lock 有个问题就是同一个线程内部也不能多次 "锁定",否则会死锁。RLock 没有这个问题,它会处理 "owning thread" 和 "recursion level" 状态,对于同一线程的多次请求锁行为,只累加计数器。

每次调用 release() 将递减该计数器,直到 0 时释放锁,因此记住 acquire() 和 release() 要成对出现。直接用 RLock,忘了 Lock 吧。

非锁定版本:

def test():  for i in range(3):  print currentThread().name, i  sleep(1)  for i in range(2):   Thread(target = test).start()

输出:

$ ./main.py  Thread-1 0  Thread-2 0  Thread-1 1  Thread-2 1  Thread-1 2  Thread-2 2

锁定版本:

lock = RLock()  def test():  lock.acquire()  try:  for i in range(3):  print currentThread().name, i  sleep(1)  finally:  lock.release()  for i in range(2):  Thread(target = test).start()

输出:

$ ./main.py  Thread-1 0  Thread-1 1  Thread-1 2  Thread-2 0  Thread-2 1  Thread-2 2

RLock 实现了 Context Management Protocol,会自动调用 acquire() 和 release() 函数,因此直接用 with/as 来实现 C# "lock(o) { ... }"。

lock = RLock()  def test():  with lock:  for i in range(3):  print currentThread().name, i  sleep(1)  for i in range(2):  Thread(target = test).start()

感谢各位的阅读,以上就是“在Python定时器中Lock的实际应用方式介绍”的内容了,经过本文的学习后,相信大家对在Python定时器中Lock的实际应用方式介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


新闻标题:在Python定时器中Lock的实际应用方式介绍
文章URL:http://bjjierui.cn/article/gsjodp.html

其他资讯