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中处理字符串之endswith()方法的使用简介
May 18 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
深入理解Python中变量赋值的问题
Jan 12 Python
python基础教程项目三之万能的XML
Apr 02 Python
Python实现二维曲线拟合的方法
Dec 29 Python
Python分支语句与循环语句应用实例分析
May 07 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
python3实现绘制二维点图
Dec 04 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
Python多分支if语句的使用
Sep 03 Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
May 31 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防止SQL注入详解及防范
2013/11/12 PHP
php的dl函数用法实例
2014/11/06 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
js 字符串转化成数字的代码
2011/06/29 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
python 简易计算器程序,代码就几行
2009/08/29 Python
Python中除法使用的注意事项
2014/08/21 Python
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
python的变量与赋值详细分析
2017/11/08 Python
简单了解python变量的作用域
2019/07/30 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
浙大毕业生自荐信
2014/01/26 职场文书
元旦促销方案
2014/03/15 职场文书
感恩寄语大全
2014/04/11 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
个人创业事迹材料
2014/12/30 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书