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 30 Python
Python实现列表删除重复元素的三种常用方法分析
Nov 24 Python
python实现redis三种cas事务操作
Dec 19 Python
Python使用matplotlib简单绘图示例
Feb 01 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
基于Python对数据shape的常见操作详解
Dec 25 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
Python3搭建http服务器的实现代码
Feb 11 Python
关于python的缩进规则的知识点详解
Jun 22 Python
Python Matplotlib简易教程(小白教程)
Jul 28 Python
Python利用myqr库创建自己的二维码
Nov 24 Python
python数字转对应中文的方法总结
Aug 02 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基于session实现数据库交互的类实例
2015/08/03 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
使用python实现knn算法
2017/12/20 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
Why we need EJB
2016/10/20 面试题
大学生简单自荐信
2013/11/10 职场文书
十佳教师事迹材料
2014/01/11 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
2015年市场部工作总结
2015/04/30 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫