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处理字符串之isspace()方法的使用
May 19 Python
python图像处理之反色实现方法
May 30 Python
简单学习Python time模块
Apr 29 Python
python 系统调用的实例详解
Jul 11 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 Python
利用python将图片转换成excel文档格式
Dec 30 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
python中JWT用户认证的实现
May 18 Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
OpenCV Python实现图像指定区域裁剪
Mar 12 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
使用无限生命期Session的方法
2006/10/09 PHP
聊天室php&mysql(三)
2006/10/09 PHP
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
一个PHP的QRcode类与大家分享
2011/11/13 PHP
PHP Directory 函数的详解
2013/03/07 PHP
项目实践之javascript技巧
2007/12/06 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
ES6中异步对象Promise用法详解
2019/07/31 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
Windows下安装python2.7及科学计算套装
2015/03/05 Python
Python功能键的读取方法
2015/05/28 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
python面试题之列表声明实例分析
2019/07/08 Python
Python安装OpenCV的示例代码
2020/03/05 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
什么是命名空间(NameSpace)
2015/11/24 面试题
写给学生的新学期寄语
2014/01/18 职场文书
群众路线剖析材料
2014/09/30 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
2014年英语工作总结
2014/12/20 职场文书
Css预编语言及区别详解
2021/04/25 HTML / CSS
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS