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 21 Python
python通过apply使用元祖和列表调用函数实例
May 26 Python
Python+Opencv识别两张相似图片
Mar 23 Python
Python中%是什么意思?python中百分号如何使用?
Mar 20 Python
python 处理dataframe中的时间字段方法
Apr 10 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
在Python中,不用while和for循环遍历列表的实例
Feb 20 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
python实现H2O中的随机森林算法介绍及其项目实战
Aug 29 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 Python
对PyTorch中inplace字段的全面理解
May 22 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
杏林同学录(七)
2006/10/09 PHP
PHP运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
理解JavaScript表单的基础知识
2016/01/25 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
python常用排序算法的实现代码
2019/11/08 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
Python计算IV值的示例讲解
2020/02/28 Python
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
六道php面试题附答案
2014/06/05 面试题
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
平面设计的岗位职责
2013/11/08 职场文书
关于保护环境的标语
2014/06/09 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
安全先进个人材料
2014/12/29 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
网络妈妈观后感
2015/06/08 职场文书
母亲去世追悼词
2015/06/23 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
python process模块的使用简介
2021/05/14 Python
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL
Windows7下FTP搭建图文教程
2022/08/05 Servers