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去掉字符串中空格的方法
Mar 11 Python
python进程管理工具supervisor使用实例
Sep 17 Python
使用Python中PDB模块中的命令来调试Python代码的教程
Mar 30 Python
深入解析Python中的__builtins__内建对象
Jun 21 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
pytorch 自定义数据集加载方法
Aug 18 Python
Python 异常处理Ⅳ过程图解
Oct 18 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 Python
Python如何用re模块实现简易tokenizer
May 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获取用户浏览器版本的方法
2015/01/03 PHP
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
自己的js工具 Cookie 封装
2009/08/21 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
浅谈Python爬虫基本套路
2019/03/25 Python
Django 重写用户模型的实现
2019/07/29 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
python实现发送邮件
2021/03/02 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
文字自荐书范文
2014/02/10 职场文书
交通事故协议书范文
2014/10/23 职场文书
五一劳动节慰问信
2015/02/14 职场文书
高中化学教学反思
2016/02/22 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
Python使用永中文档转换服务
2022/05/06 Python