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的Django框架中simple-todo工具的简单使用
May 30 Python
举例讲解Python中的list列表数据结构用法
Mar 12 Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 Python
浅谈Python处理PDF的方法
Nov 10 Python
python3+PyQt5实现自定义分数滑块部件
Apr 24 Python
Python 脚本获取ES 存储容量的实例
Dec 27 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
django admin.py 外键,反向查询的实例
Jul 26 Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 Python
解决Python二维数组赋值问题
Nov 28 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
python实现数字炸弹游戏
Jul 17 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数组应用之比较两个时间的相减排序
2008/08/18 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
17个Python小技巧分享
2015/01/23 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
台湾森森购物网:U-mall
2017/10/16 全球购物
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
某公司.Net方向面试题
2014/04/24 面试题
家长对孩子评语
2014/01/30 职场文书
成立公司计划书
2014/05/07 职场文书
英文升职感谢信
2015/01/23 职场文书
小学教师岗位职责
2015/04/02 职场文书
2015年纪念“卢沟桥事变”78周年活动方案
2015/05/06 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
2016年国陪研修感言
2015/11/18 职场文书
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android