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 相关文章推荐
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
浅谈Python 对象内存占用
Jul 15 Python
Python中的浮点数原理与运算分析
Oct 12 Python
python数字图像处理实现直方图与均衡化
May 04 Python
Python中作用域的深入讲解
Dec 10 Python
pyside+pyqt实现鼠标右键菜单功能
Dec 08 Python
浅谈PYTHON 关于文件的操作
Mar 19 Python
Python3进制之间的转换代码实例
Aug 24 Python
Python3直接爬取图片URL并保存示例
Dec 18 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 Python
Python 如何创建一个线程池
Jul 28 Python
使用python对excel表格处理的一些小功能
Jan 25 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 mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
Redis构建分布式锁
2017/03/28 PHP
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
Python列表推导式的使用方法
2013/11/21 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
学生处主任岗位职责
2013/12/01 职场文书
预备党员思想汇报范文
2013/12/29 职场文书
火车的故事教学反思
2014/02/11 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
spring 项目实现限流方法示例
2022/07/15 Java/Android