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入门_学会创建并调用函数的方法
May 16 Python
快速了解Python相对导入
Jan 12 Python
Python实现识别手写数字 Python图片读入与处理
Mar 23 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 Python
让代码变得更易维护的7个Python库
Oct 09 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
Mar 30 Python
Python基于numpy模块实现回归预测
May 14 Python
基于plt.title无法显示中文的快速解决
May 16 Python
Python 图片处理库exifread详解
Feb 25 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生成自己的LOG文件
2006/10/09 PHP
一个高ai的分页函数和一个url函数
2006/10/09 PHP
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
JavaScript Sort 表格排序
2009/10/31 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
2015/10/19 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
Django日志模块logging的配置详解
2017/02/14 Python
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
python八大排序算法速度实例对比
2017/12/06 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
上班上网检讨书
2014/01/29 职场文书
学校火灾防控方案
2014/06/09 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
党员检讨书范文
2014/12/27 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
初中生活随笔
2015/08/15 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书