python多线程高级锁condition
2018-07-11 21:48
204 查看
版权声明:尊重版权, 从你做起 https://blog.csdn.net/weixin_42359464/article/details/81007495
blog
多线程编程中如果使用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中threading的高级函数应用解析 Lock Rlock Condition Semaphore Timer Event Semaphore对象
- python多线程之Condition(条件变量)
- python高级之多线程
- Python 多线程进程高级指南(二)
- Python高级篇————7、多线程
- Python 多线程 Condition 的使用
- python 多线程中的同步锁 Lock Rlock Semaphore Event Condition
- Python 多线程 Condition 用法
- python高级编程--多线程
- Python 多线程学习05 条件变量 Condition
- Python 高级之 -------多线程
- Python 多线程(高级教程)
- Python高级爬虫(三):数据存储以及多线程
- 第七篇: python高级之多线程
- python高级-多线程总结(思维导图)
- python:threading多线程模块-Condition实现复杂的同步
- [疯狂Java]多线程:线程通信(监控器信号、Condition信号、阻塞队列)
- python threading 模块控制多线程
- python并发的痛——多线程
- Python模块学习:threading 多线程控制和处理