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多线程高级锁condition简单用法示例
- Author -
weixin_42359464声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@