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 随机数生成的代码的详细分析
May 15 Python
python微信跳一跳系列之色块轮廓定位棋盘
Feb 26 Python
python网络爬虫学习笔记(1)
Apr 09 Python
django 修改server端口号的方法
May 14 Python
Django 实现购物车功能的示例代码
Oct 08 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
pandas 中对特征进行硬编码和onehot编码的实现
Dec 20 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
Mar 17 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 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格式化电话号码的方法
2015/04/24 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
Js动态创建div
2008/09/25 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
DOM基础教程之使用DOM控制表格
2015/01/20 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
js动态生成表格(节点操作)
2021/01/12 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
python中使用while循环的实例
2019/08/05 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
幼儿园家长寄语
2014/04/02 职场文书
请假条怎么写
2014/04/10 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
上课说话检讨书
2015/01/27 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书