Python多线程编程(八):使用Event实现线程间通信


Posted in Python onApril 05, 2015

使用threading.Event可以实现线程间相互通信,之前的Python:使用threading模块实现多线程编程七[使用Condition实现复杂同步]我们已经初步实现了线程间通信的基本功能,但是更为通用的一种做法是使用threading.Event对象。使用threading.Event可以使一个线程等待其他线程的通知,我们把这个Event传递到线程对象中,Event默认内置了一个标志,初始值为False。一旦该线程通过wait()方法进入等待状态,直到另一个线程调用该Event的set()方法将内置标志设置为True时,该Event会通知所有等待状态的线程恢复运行。

''' 

Created on 2012-9-9 

 

@author: walfred 

@module: thread.TreadTest8 

'''  

 

import threading  

import time  

 

class MyThread(threading.Thread):  

    def __init__(self, signal):  

        threading.Thread.__init__(self)  

        self.singal = signal  

 

    def run(self):  

        print "I am %s,I will sleep ..."%self.name  

        self.singal.wait()  

        print "I am %s, I awake..." %self.name  

 

if __name__ == "__main__":  

    singal = threading.Event()  

    for t in range(0, 3):  

        thread = MyThread(singal)  

        thread.start()  

 

    print "main thread sleep 3 seconds... "  

    time.sleep(3)  

 

    singal.set()

运行效果如下:

I am Thread-1,I will sleep ...

I am Thread-2,I will sleep ...

I am Thread-3,I will sleep ...

main thread sleep 3 seconds...

I am Thread-1, I awake...I am Thread-2, I awake...

 

I am Thread-3, I awake...
Python 相关文章推荐
python逐行读取文件内容的三种方法
Jan 20 Python
Python3遍历目录树实现方法
May 22 Python
Python文件读取的3种方法及路径转义
Jun 21 Python
Python模拟三级菜单效果
Sep 11 Python
Python实现破解12306图片验证码的方法分析
Dec 29 Python
Python pandas常用函数详解
Feb 07 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
python利用tkinter实现屏保
Jul 30 Python
Jupyter加载文件的实现方法
Apr 14 Python
python单元测试之pytest的使用
Jun 07 Python
Python多线程编程(七):使用Condition实现复杂同步
Apr 05 #Python
Python多线程编程(六):可重入锁RLock
Apr 05 #Python
Python多线程编程(五):死锁的形成
Apr 05 #Python
Python多线程编程(四):使用Lock互斥锁
Apr 05 #Python
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 #Python
Python多线程编程(二):启动线程的两种方法
Apr 05 #Python
Python多线程编程(一):threading模块综述
Apr 05 #Python
You might like
PHP常用函数小技巧
2008/09/11 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
javascript定义函数的方法
2010/12/06 Javascript
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
jquery使用经验小结
2015/05/20 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
JavaScript对JSON数组简单排序操作示例
2019/01/31 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
python使用KNN算法手写体识别
2018/02/01 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
Python生成词云的实现代码
2020/01/14 Python
办公室驾驶员岗位职责
2013/11/15 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
大学军训感言400字
2014/03/11 职场文书
矿泉水广告词
2014/03/20 职场文书
开门红主持词
2014/04/02 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电