Python编程之event对象的用法实例分析


Posted in Python onMarch 23, 2017

本文实例讲述了Python编程中event对象的用法。分享给大家供大家参考,具体如下:

Python提供了Event对象用于线程间通信,它是由线程设置的信号标志,如果信号标志位为假,则线程等待直到信号被其他线程设置成真。这一点似乎和windows的event正好相反。 Event对象实现了简单的线程通信机制,它提供了设置信号,清除信号,等待等用于实现线程间的通信。

1.设置信号

使用Event的set()方法可以设置Event对象内部的信号标志为真。Event对象提供了isSet()方法来判断其内部信号标志的状态,当使用event对象的set()方法后,isSet()方法返回真.

2.清除信号

使用Event对象的clear()方法可以清除Event对象内部的信号标志,即将其设为假,当使用Event的clear方法后,isSet()方法返回假

3.等待

Event对象wait的方法只有在内部信号为真的时候才会很快的执行并完成返回。当Event对象的内部信号标志位假时,则wait方法一直等待到其为真时才返回。

可以使用Event让工作线程优雅地退出,示例代码如下:

# make thread exit nicely
class MyThread9(threading.Thread):
  def __init__(self):
    threading.Thread.__init__(self)
  def run(self):
    global event
    while True:
      if event.isSet():
        logging.warning(self.getName() + " is Running")
        time.sleep(2)
      else:
        logging.warning(self.getName() + " stopped")
        break;
event = threading.Event()
event.set()
def Test9():
  t1=[]
  for i in range(6):
    t1.append(MyThread9())
  for i in t1:
    i.start()
  time.sleep(10)
  q =raw_input("Please input exit:")
  if q=="q":
    event.clear()
if __name__=='__main__':
  Test9()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python算法之栈(stack)的实现
Aug 18 Python
Python实现快速多线程ping的方法
Jul 15 Python
Python数据库的连接实现方法与注意事项
Feb 27 Python
Python的Django框架中消息通知的计数器实现教程
Jun 13 Python
教你用Python创建微信聊天机器人
Mar 31 Python
基于python实现KNN分类算法
Apr 23 Python
pycharm修改file type方式
Nov 19 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
python动态文本进度条的实例代码
Jan 22 Python
Django Haystack 全文检索与关键词高亮的实现
Feb 17 Python
python爬虫泛滥的解决方法详解
Nov 25 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 Python
Python中.py文件打包成exe可执行文件详解
Mar 22 #Python
python3中dict(字典)的使用方法示例
Mar 22 #Python
Python编程实现删除VC临时文件及Debug目录的方法
Mar 22 #Python
Python多线程经典问题之乘客做公交车算法实例
Mar 22 #Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 #Python
python条件变量之生产者与消费者操作实例分析
Mar 22 #Python
Python实现遍历目录的方法【测试可用】
Mar 22 #Python
You might like
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
Python的设计模式编程入门指南
2015/04/02 Python
git进行版本控制心得详谈
2017/12/10 Python
python实现学生信息管理系统
2020/04/05 Python
Python3实现购物车功能
2018/04/18 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
事业单位分类改革实施方案
2014/03/21 职场文书
基层党组织整改方案
2014/10/25 职场文书
教师节晚会主持词
2015/06/30 职场文书