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实现带百分比的进度条
Jun 28 Python
python操作mysql数据库
Mar 05 Python
Python搜索引擎实现原理和方法
Nov 27 Python
利用python为运维人员写一个监控脚本
Mar 25 Python
python3 http提交json参数并获取返回值的方法
Dec 19 Python
python使用PIL模块获取图片像素点的方法
Jan 08 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
华为2019校招笔试题之处理字符串(python版)
Jun 25 Python
python如何把字符串类型list转换成list
Feb 18 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
Python使用PyYAML库读写yaml文件的方法
Apr 06 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
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
基于laravel制作APP接口(API)
2016/03/15 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
跟我学习javascript的undefined与null
2015/11/17 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
python获取糗百图片代码实例
2013/12/18 Python
Python入门之modf()方法的使用
2015/05/15 Python
Python编程中装饰器的使用示例解析
2016/06/20 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
2018/11/06 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
2019/08/01 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
PyTorch中的Variable变量详解
2020/01/07 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
使用python计算三角形的斜边例子
2020/04/15 Python
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
小车司机岗位职责
2013/11/25 职场文书
合作协议书范本
2014/04/17 职场文书
单位工作证明范文
2014/09/14 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫