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在linux中输出带颜色的文字的方法
Jun 19 Python
Python自动连接ssh的方法
Mar 07 Python
python 根据正则表达式提取指定的内容实例详解
Dec 04 Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 Python
对python 多线程中的守护线程与join的用法详解
Feb 18 Python
Python、 Pycharm、Django安装详细教程(图文)
Apr 12 Python
将python安装信息加入注册表的示例
Nov 20 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 Python
Python实现我的世界小游戏源代码
Mar 02 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 Python
python中%格式表达式实例用法
Jun 18 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新手上路(七)
2006/10/09 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
python实现下载指定网址所有图片的方法
2015/08/08 Python
python爬虫之百度API调用方法
2017/06/11 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
python中sys.argv函数精简概括
2018/07/08 Python
python爬取网易云音乐评论
2018/11/16 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
Python中的list与tuple集合区别解析
2019/10/12 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
毕业生精彩的自我评价分享
2013/10/06 职场文书
民生工程实施方案
2014/03/22 职场文书
我的梦想演讲稿
2014/04/30 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
综合管理员岗位职责
2015/02/11 职场文书
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle