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采用raw_input读取输入值的方法
Aug 18 Python
将pandas.dataframe的数据写入到文件中的方法
Dec 07 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
Python基础学习之函数方法实例详解
Jun 18 Python
python多线程同步实例教程
Aug 11 Python
Python 变量的创建过程详解
Sep 02 Python
python破解bilibili滑动验证码登录功能
Sep 11 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
pytorch标签转onehot形式实例
Jan 02 Python
python 双循环遍历list 变量判断代码
May 04 Python
了解一下python内建模块collections
Sep 07 Python
Python 如何安装Selenium
May 06 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
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
js 字符串操作函数
2009/07/25 Javascript
javascript 显示当前系统时间代码
2009/12/28 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
python中的itertools的使用详解
2020/01/13 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
Sql面试题
2013/03/20 面试题
在C#中如何实现多态
2014/07/02 面试题
人力资源经理的岗位职责
2014/03/02 职场文书
工作保证书范文
2014/04/29 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
关于责任的演讲稿
2014/05/20 职场文书
公关活动策划方案
2014/05/25 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
全国助残日活动总结
2015/05/11 职场文书
英语投诉信范文
2015/07/03 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书