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编程中的反模式实例分析
Dec 08 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
Python操作Sql Server 2008数据库的方法详解
May 17 Python
Python求解任意闭区间的所有素数
Jun 10 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
python pygame实现2048游戏
Nov 20 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
Tensorflow不支持AVX2指令集的解决方法
Feb 03 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
Python使用qrcode二维码库生成二维码方法详解
Feb 17 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
Python Matplotlib绘制动画的代码详解
May 30 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中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
python获得图片base64编码示例
2014/01/16 Python
详解K-means算法在Python中的实现
2017/12/05 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
通过实例了解python property属性
2019/11/01 Python
python加载自定义词典实例
2019/12/06 Python
Python sublime安装及配置过程详解
2020/06/29 Python
详解Python中的路径问题
2020/09/02 Python
Python扫描端口的实现
2021/01/25 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
医学毕业生自荐信
2013/10/11 职场文书
大专生自荐书范文
2014/06/22 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
Python基于百度API识别并提取图片中文字
2021/06/27 Python
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS
最新最全的手机号验证正则表达式
2022/02/24 Javascript
Python实现自动玩连连看的脚本分享
2022/04/04 Python