python多线程高级锁condition简单用法示例

 更新时间:2019年11月07日 08:44:58   作者:weixin_42359464  
这篇文章主要介绍了python多线程高级锁condition简单用法,结合实例形式分析了condition对象常用方法及相关使用技巧,需要的朋友可以参考下

本文实例讲述了python多线程高级锁condition简单用法。分享给大家供大家参考,具体如下:

多线程编程中如果使用Condition对象代替lock, 能够实现在某个事件触发后才处理数据, condition中含有的方法:

  • - wait:线程挂起,收到notify通知后继续运行
  • - notify:通知其他线程, 解除其它线程的wai状态
  • - notifyAll(): 通知所有线程
  • - acquire和release: 获得锁和解除锁, 与lock类似,
  • - enter和exit使得对象支持上下文操作:
  def __enter__(self):
    return self._lock.__enter__()
  def __exit__(self, *args):
    return self._lock.__exit__(*args)

代码:

import threading
from threading import Condition
# condition
class XiaoAi(threading.Thread):
  def __init__(self, cond):
    self.cond = cond
    super().__init__(name="xiaoai")
  def run(self):
    self.cond.acquire()
    self.cond.wait()
    print('{}:ennn. '.format(self.name))
    self.cond.notify()
    self.cond.wait()
    print('{}:好嗒. '.format(self.name))
    self.cond.release()
class TianMao(threading.Thread):
  def __init__(self, cond):
    super().__init__(name="tiaomao")
    self.cond = cond
  def run(self):
    self.cond.acquire()
    print('{}:hello ~ xiaoai. '.format(self.name))
    self.cond.notify()
    self.cond.wait()
    print('{}:我们来念一首诗吧! . '.format(self.name))
    self.cond.notify()
    self.cond.release()
if __name__ == '__main__':
  condition = Condition()
  xiaoai = XiaoAi(condition)
  tianmao = TianMao(condition)
  # 启动顺序很重要
  xiaoai.start()
  tianmao.start()

打印结果:

tiaomao:hello ~ xiaoai.
xiaoai:ennn.
tiaomao:我们来念一首诗吧! .
xiaoai:好嗒

总结:

这个比较鸡肋

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python进程与线程操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》、《Python+MySQL数据库程序设计入门教程》及《Python常见数据库操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • Python3 pickle对象串行化代码实例解析

    Python3 pickle对象串行化代码实例解析

    这篇文章主要介绍了Python3 pickle对象串行化代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 装上这 14 个插件后,PyCharm 真的是无敌的存在

    装上这 14 个插件后,PyCharm 真的是无敌的存在

    这篇文章主要介绍了装上这 14 个插件后,PyCharm 真的是无敌的存在,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Python中decimal.Decimal类型和float类型的比较

    Python中decimal.Decimal类型和float类型的比较

    这篇文章主要介绍了Python中decimal.Decimal类型和float类型的比较,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Python 使用 raise 语句抛出异常的流程分析

    Python 使用 raise 语句抛出异常的流程分析

    在Python编程中,异常处理是至关重要的一部分,本文将探讨 Python 中 raise 语句的使用方法以及如何通过 raise 语句来抛出各种类型的异常,从而有效地进行异常处理,感兴趣的朋友跟随小编一起看看吧
    2021-02-02
  • 如何利用Python分析出微信朋友男女统计图

    如何利用Python分析出微信朋友男女统计图

    这篇文章主要给大家介绍了关于如何利用Python分析出微信朋友男女统计图的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2019-01-01
  • python 模拟网站登录——滑块验证码的识别

    python 模拟网站登录——滑块验证码的识别

    这篇文章主要介绍了python 模拟网站登录——滑块验证码的识别,帮助大家更好的理解和学习使用python的爬虫技术,感兴趣的朋友可以了解下
    2021-03-03
  • Python重试库 Tenacity详解(推荐)

    Python重试库 Tenacity详解(推荐)

    这篇文章主要介绍了Python重试库Tenacity详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • OpenCV物体跟踪树莓派视觉小车实现过程学习

    OpenCV物体跟踪树莓派视觉小车实现过程学习

    这篇文章主要介绍了OpenCV物体跟踪树莓派视觉小车的实现过程学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • python Gabor滤波器讲解

    python Gabor滤波器讲解

    这篇文章主要介绍了python Gabor滤波器讲解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • python 邮件检测工具mmpi的使用

    python 邮件检测工具mmpi的使用

    这篇文章主要介绍了python 用mmpi库实现邮件检测的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01

最新评论