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


Posted in Python onNovember 07, 2019

本文实例讲述了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 相关文章推荐
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
python实现给字典添加条目的方法
Sep 25 Python
Python解析json文件相关知识学习
Mar 01 Python
python中私有函数调用方法解密
Apr 29 Python
Python使用functools模块中的partial函数生成偏函数
Jul 02 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
python PyTorch参数初始化和Finetune
Feb 11 Python
python解决pandas处理缺失值为空字符串的问题
Apr 08 Python
Python面向对象编程基础实例分析
Jan 17 Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 Python
python文件操作的简单方法总结
Nov 07 #Python
详解Django admin高级用法
Nov 06 #Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 #Python
Python实现socket非阻塞通讯功能示例
Nov 06 #Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 #Python
详解Python list和numpy array的存储和读取方法
Nov 06 #Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 #Python
You might like
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
javascript开发中因空格引发的错误
2010/11/08 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
angular 服务随记小结
2019/05/06 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
Python2随机数列生成器简单实例
2017/09/04 Python
python爬取m3u8连接的视频
2018/02/28 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
abstract是什么意思
2012/02/12 面试题
英语系本科生个人求职信
2013/09/21 职场文书
家佳咖啡店创业计划书
2013/12/27 职场文书
家长评语大全
2014/01/22 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
暖春观后感
2015/06/08 职场文书
思品教学工作总结
2015/08/10 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
php修改word的实例方法
2021/11/17 PHP