python多线程高级锁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程序设计有所帮助。
- Python线程协作threading.Condition实现过程解析
- python使用threading.Condition交替打印两个字符
- Python线程条件变量Condition原理解析
- Python中使用Queue和Condition进行线程同步的方法
- Python多线程编程(七):使用Condition实现复杂同步
- Python threading模块condition原理及运行流程详解
转载请注明出处:http://www.lishuoershouche.com/article/20230401/216498.html
随机推荐
-
Python多线程以及多线程中join()的使用方法示例
Python多线程与多进程中join()方法的效果是相同的。 下面仅以多线程为例: 首先需要明确几个概念: 知识点一: 当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行流的最小单元,当设置多线程时,主线程会创建多个子线程,在p...
-
python多线程高级锁condition简单用法示例
本文实例讲述了python多线程高级锁condition简单用法。分享给大家供大家参考,具体如下: 多线程编程中如果使用Condition对象代替lock, 能够实现在某个事件触发后才处理数据, condition中含有的方法: -...
-
python多线程Condition代码示例
# -*- coding:utf-8 -*- import threading import time class Producer(threading.Thread): # 生产者函数,重写run()方法 def ru...
-
Python多线程编程(四):使用Lock互斥锁
前面已经演示了Python:使用threading模块实现多线程编程二两种方式起线程和Python:使用threading模块实现多线程编程三threading.Thread类的重要函数,这两篇文章的示例都是演示了互不相干的独立线程,现在...
-
python多线程抽象编程模型详解
最近需要完成一个多线程下载的工具,对其中的多线程下载进行了一个抽象,可以对所有需要使用到多线程编程的地方统一使用这个模型来进行编写。 主要结构: 1、基于Queue标准库实现了一个类似线程池的工具,用户指定提交任务线程submitter与...
-
Python多线程Threading、子线程与守护线程实例详解
本文实例讲述了Python多线程Threading、子线程与守护线程。分享给大家供大家参考,具体如下: 线程与进程: 线程对于进程来说,就好似工厂里的工人,分配资源是分配到工厂,工人再去处理。 线程是被系统独立调度和分派的基本单...
-
Python多线程及其基本使用方法实例分析
本文实例讲述了Python多线程及其基本使用方法。分享给大家供大家参考,具体如下: 学习Python的多线程(Multi-threading),至少应该要有进程与线程的基本概念,可以参考:http://www.ruanyifeng.com...
-
python多线程编程方式分析示例详解
在Python多线程中如何创建一个线程对象如果你要创建一个线程对象,很简单,只要你的类继承threading.Thread,然后在__init__里首先调用threading.Thread的__init__方法即可 复制代码 代码如下:i...
-
python多线程编程中的join函数使用心得
今天去辛集买箱包,下午挺晚才回来,又是恶心又是头痛。恶心是因为早上吃坏东西+晕车+回来时看到车祸现场,头痛大概是烈日和空调混合刺激而成。没有时间没有精神没有力气学习了,这篇博客就说说python中一个小小函数。 由于坑爹的学校坑爷的专业,...
-
Python多线程爬虫简单示例
python是支持多线程的,主要是通过thread和threading这两个模块来实现的。thread模块是比较底层的模块,threading模块是对thread做了一些包装的,可以更加方便的使用。 虽然python的多线程受GIL限制,...