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使用marshal模块序列化实例
Sep 25 Python
决策树的python实现方法
Nov 18 Python
python通过colorama模块在控制台输出彩色文字的方法
Mar 19 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
python3实现跳一跳点击跳跃
Jan 08 Python
Atom的python插件和常用插件说明
Jul 08 Python
python随机数分布random测试
Aug 27 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
python3下pygame如何实现显示中文
Jan 11 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 Python
Matlab求解数组中的最大值及它所在的具体位置
Apr 16 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
url传递的参数值中包含&时,url自动截断问题的解决方法
2016/08/02 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
python对象与json相互转换的方法
2019/05/07 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
Python函数式编程实例详解
2020/01/17 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
风险评估实施方案
2014/03/09 职场文书
历史学专业求职信
2014/06/19 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
写景作文评语集锦
2014/12/25 职场文书
节水倡议书
2015/01/19 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
Python实现单例模式的5种方法
2021/06/15 Python
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js