条件同步和条件变量(condition)同步差不多意思,只是少了锁功能,因为条件同步设计于不访问共享资源的条件环境。

event围绕一个标志位在搞。

event=threading.Event():条件环境对象,初始值 为False;
event.isSet():返回event的状态值;
event.wait():如果 event.isSet()==False将阻塞线程;
event.set(): 设置event的状态值为True,所有阻塞池的线程激活进入就绪状态, 等待操作系统调度;
event.clear():恢复event的状态值为False。

实例代码:

import threading,time
class Boss(threading.Thread):def run(self):print("BOSS:今晚大家都要加班到22:00。")# event.isSet() or event.set()if event.isSet:event.set()time.sleep(5)print("BOSS:<22:00>可以下班了。")# event.isSet() or event.set()if event.isSet:event.set()
class Worker(threading.Thread):def run(self):event.wait()print("Worker:哎……命苦啊!")time.sleep(1)event.clear()event.wait()print("Worker:OhYeah!")
if __name__=="__main__":event=threading.Event()  #不是锁了,是一个事件。threads=[]for i in range(5):threads.append(Worker())threads.append(Boss())for t in threads:t.start()for t in threads:t.join()

实行结果:

BOSS:今晚大家都要加班到22:00。
Worker:哎……命苦啊!
Worker:哎……命苦啊!
Worker:哎……命苦啊!
Worker:哎……命苦啊!
Worker:哎……命苦啊!
BOSS:<22:00>可以下班了。
Worker:OhYeah!
Worker:OhYeah!
Worker:OhYeah!
Worker:OhYeah!
Worker:OhYeah!Process finished with exit code 0


转载于:https://www.cnblogs.com/chenhaiming/p/9916260.html

PYTHON——多线程:同步条件(Event)相关推荐

  1. python多线程同步

    python多线程同步 作者:vpoet 日期:大约在夏季 1 import threading 2 import time 3 mylock = threading.RLock() 4 num=0 ...

  2. python 多线程同步锁之实现停车场业务(2)

    这边文章是实现同时有车辆出去,又有车辆进来的业务逻辑,和现实的差不多 真正要和现实中的一样,只需要更改休眠时间就可,通过调节修改时间,动态实现 之前的代码 python 多线程同步锁之实现停车场业务( ...

  3. java线程条件变量_多线程同步条件变量(转载)

    最近看<UNIX环境高级编程>多线程同步,看到他举例说条件变量pthread_cond_t怎么用,愣是没有看懂,只好在网上找了份代码,跑了跑,才弄明白 #include #include ...

  4. 34 多线程同步之Event

    事件用于线程之间的通信.一个线程发出一个信号,其他一个或多个线程等待,调用Event对象的wait方法,线程则会阻塞等待,直到别的线程set之后才会被唤醒. [示例 1]使用Event实现多线程同步 ...

  5. python 多线程同步_Python利用多线程同步锁实现多窗口订票系统(推荐)

    利用Python实现多窗口订票系统,利用 threading.Lock() 避免出现一票多卖,无票也卖的情况,并规范化输出情况. 代码: import threading import time ti ...

  6. python多线程编程: 条件变量同步

    2019独角兽企业重金招聘Python工程师标准>>> 有待写.............................哈哈 转载于:https://my.oschina.net/0 ...

  7. python多线程同步与互斥_Python之多线程:线程互斥与线程同步

    一.锁在多线程中的使用:线程互斥 lock = threading.Lock()#创建一个锁对象 1.with lock: pass 和进程使用的方式相同 2.控制线程结束的时间 通过一个全局变量 # ...

  8. Linux多线程同步------条件变量

    先来看下<Linux高性能服务器编程>中对条件变量的描述: 上述话可以总结为: 多线程中某一个线程依赖于另外一个线程对共享数据的改变时,就可以使用条件变量! 用消费者生产者的来理解条件变量 ...

  9. python多线程同步与互斥_python多线程编程(3): 使用互斥锁同步线程

    问题的提出 上一节的例子中,每个线程互相独立,相互之间没有任何关系.现在假设这样一个例子:有一个全局的计数num,每个线程获取这个全局的计数,根据num进行一些处理,然后将num加1.很容易写出这样的 ...

  10. Python多线程同步、互斥锁、死锁

    接着上篇多线程继续讲,上篇最后的多线程共享全局变量对变量的处理值出错在本文中给出解决方案. 出现这个情况的原因是在python解释器中GIL全局解释器锁. GIL:全局解释器锁,每个线程在执行的过程都 ...

最新文章

  1. 我看team work
  2. Java中switch语句支持的类型
  3. I00029 C语言程序-打印九九乘法表
  4. 利用Jqurey写一个输入内容增加并且可以删除,上下移动的标签
  5. javascript学习资料汇集
  6. SpringCloud项目接入Nacos服务治理
  7. 通过bat文件一键配置电脑IP
  8. 企业微信-付款到员工零钱
  9. IP 库的那些事儿之 2013 - 2014 流水帐版
  10. 可以批量制作吊牌标签上的条码标签打印软件
  11. NANK南卡发布新品旗舰版——南卡护眼台灯Pro,延续“护眼”理念
  12. 计算机怎么样保存文件,电脑怎样保存表格文件
  13. 面试专题:苹果树(Qtrade)二面三面
  14. QVector使用示例
  15. Kali Linux 基于FreeFloat FTP Server编写漏洞渗透模块(下)
  16. 将IDEA上面写的代码上传到gitee仓库保姆式教程
  17. 苹果usb设置在哪里_苹果笔记本空间不足,有它帮你曲线救国
  18. cloverconfig机型修改_Clover介绍 及 新版 config.plist 代码作用详解
  19. 可替代Adobe Reader的pdf阅读器下载
  20. js 鼠标移入移出事件

热门文章

  1. IOC的具体使用代码
  2. 译-使用Scroll Snapping实现CSS控制页面滚动
  3. 双精度浮点数转换_模型压缩一半,精度几乎无损,TensorFlow推出半精度浮点量化工具包,还有在线Demo...
  4. 最新房天下登录接口(RSA)JS逆向分析
  5. JavaScript 中的日期和时间
  6. 计算机智能测试与机电工程学,机电工程学院智能技术创新团队论文被国际计算机视觉顶级会议ICCV录用...
  7. php 辅助函数,辅助函数 - Laravel 5.8 中文文档手册 - php中文网手册
  8. win7 java is unavailable,win7系统出现“The RPC server is unavailable”的解决方法
  9. Oulipo(Hash入门第一题 Hash函数学习)
  10. OFDM系统MATLAB仿真