event = threading.Event()   #创建同步对象

event.wait()     #同步对象等待状态

event.set()  #同步对象设置True
event.clear()    #清除同步对象

event.wait()  --->捕捉到  event.set() ---> 继续执行   --->event.clear()  清除对象

例子:

import threading,time
class Boss(threading.Thread):
def run(self):             
print("BOSS:今晚大家都要加班到22:00。") #7 假如继续运行到这了
print(event.isSet()) #8 打印下当前设定状态False
event.set()                #9 设置为True
time.sleep(5)             #12 睡眠5秒
print("BOSS:<22:00>可以下班了。") #16 打印此消息
print(event.isSet())
event.set()                #17 设置event.set()为True状态,让线程中的event.wait()中捕捉
class Worker(threading.Thread): #5 假如运行到这
def run(self):
event.wait()          #6 event.wait()等待event.set() 这时候这里是等待状态后面不执行 #11 此时5个Worker线程会捕捉到event.set()为True状态,会继续开始接着后面执行
print("Worker:哎……命苦啊!") #12 5个线程机会同时打印这个消息
time.sleep(1)          #13 5个线程开始睡眠1 
event.clear()         #14 清除event.set()状态 此时event.set()为 False
event.wait()          #15 event.wait()等待event.set()  这时候这里是等待状态后面不执行 #18 捕捉到event.set()为True状态,继续开始接着后面执行
        print("Worker:OhYeah!")    
if __name__=="__main__":
event=threading.Event() #1 创建对象
threads=[]
for i in range(5):    #2 5 Worker对象放入到列表
threads.append(Worker())
threads.append(Boss())  #3 Boss对象放入列表
for t in threads:
t.start()       #4 运行线程对象(列表里面的对象先后谁执行,不知道)
for t in threads:
t.join() 结果:

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

  

同步对象(同步条件Event)的更多相关文章

  1. Python学习---同步条件event/队列queue1223

    写在前面: 在使用这些共享API的时候,我们要注意以下几点: 在UNIX平台上,当某个进程终结之后,该进程需要被其父进程调用wait,否则进程成为僵尸进程(Zombie).所以,有必要对每个Proce ...

  2. Day12- Python基础12 线程、GIL、Lock锁、RLock锁、Semaphore锁、同步条件event

    http://www.cnblogs.com/yuanchenqi/articles/6248025.html  博客地址 本节内容: 1:进程和线程的说明 2:线程的两种调用方式 3:threadi ...

  3. 并发、并行、同步、异步、全局解释锁GIL、同步锁Lock、死锁、递归锁、同步对象/条件、信号量、队列、生产者消费者、多进程模块、进程的调用、Process类、

    并发:是指系统具有处理多个任务/动作的能力. 并行:是指系统具有同时处理多个任务/动作的能力. 并行是并发的子集. 同步:当进程执行到一个IO(等待外部数据)的时候. 异步:当进程执行到一个IO不等到 ...

  4. Linux的线程同步对象:互斥量Mutex,读写锁,条件变量

        进程是Linux资源分配的对象,Linux会为进程分配虚拟内存(4G)和文件句柄等 资源,是一个静态的概念.线程是CPU调度的对象,是一个动态的概念.一个进程之中至少包含有一个或者多个线程.这 ...

  5. [转]同步对象Event的用法

    同步对象Event的用法  首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方面.  CreateEvent函数功能描述:创建或打开一个命名的或无名的事 ...

  6. 多线程 同步对象 event 简单实例 &进程间通信

    多线程 同步对象event import threading,time class Boss(threading.Thread): def run(self): print("BOSS:今晚 ...

  7. c++ 跨平台线程同步对象那些事儿——基于 ace

    前言 ACE (Adaptive Communication Environment) 是早年间很火的一个 c++ 开源通讯框架,当时 c++ 的库比较少,以至于谈 c++ 网络通讯就绕不开 ACE, ...

  8. C++多线程同步之事件(Event)

    原文链接:http://blog.csdn.net/olansefengye1/article/details/53291074 一.事件(Event)原理解析 1.线程同步Event,主要用于线程间 ...

  9. 基于Python的SQL Server数据库对象同步轻量级实现

    缘由 日常工作中经常遇到类似的问题:把某个服务器上的某些指定的表同步到另外一台服务器.类似需求用SSIS或者其他ETL工作很容易实现,比如用SSIS的话就可以,但会存在相当一部分反复的手工操作.建源的 ...

随机推荐

  1. JAVA数据库操作回滚小结

    一:总结的原因 在最近的工作中,遇到了一个一对多关系多表数据传输,传送成功状态绑定在主数据表上,因为代码不健壮问题造成了主表传送状态更新失败,而子表数据就被重复插入.又由于数据传输频率很高,我们的测试 ...

  2. makeObjectsPerformSelector对数组中的对象发送消息执行对象中方法

    - (void)makeObjectsPerformSelector:(SEL)aSelector; - (void)makeObjectsPerformSelector:(SEL)aSelector ...

  3. SQLserver触发器实现A表insert到B表

    CREATE TABLE tab1(tab1_id varchar(11));CREATE TABLE tab2(tab2_id varchar(11)); 现在我们有两张表,要实现在A表里面inse ...

  4. mission 01

    A.自己目前在专业能力上的短板,及打算如何弥补. answer:由于在课本中所学的知识是死板的,加上不知如何课外提高自己在专业上的实践应用能力,所以我认为我在专业能力上的短板是缺乏将所掌握的知识应用到 ...

  5. s21day09 python笔记

    s21day09 python笔记 一.三元运算(三目运算) 用途:用于简单的if条件语句 基本结构 v = 前面 if 条件 else 后面 #如果条件为真,v = 前面,否则,v = 后面 &qu ...

  6. alpha冲刺(2/10)

    前言 队名:旅法师 作业链接 队长博客 燃尽图 会议 会议照片 会议内容 陈晓彬(组长) 今日进展: 召开会议 安排任务 博客撰写 构建之法的阅读 问题困扰: 分配任务,还是不熟练,对后台不熟悉,不知 ...

  7. Centos7 安装Nginx 防火墙开放80端口给外网访问

    Centos7的防火墙改成了firewall,不再叫iptables,开放端口的方法如下: firewall-cmd --zone=public --add-port=80/tcp --permane ...

  8. PHP 打开已有图片进行编辑

    <?php header("content-type:image/jpeg");//表明请求页面的内容是jpeg格式的图像 即当前页面会以图片的新式展示 去掉这行就可以显示正 ...

  9. PythonStudy——函数的返回值 The return value of the function

    # 在函数体中,通过return关键词返回函数的内部数据给外部 """# 一.作用# return作用:1.结束函数:2.将函数的内部数据返回给外部 def fn(): ...

  10. 数字证书的理解以及自建CA机构颁发证书

    一.理解什么是数字证书   http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html    理解数字证书等概念,无数次想好好看 ...