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计算圆周长、面积、球体体积并画出圆
Apr 08 Python
跟老齐学Python之大话题小函数(1)
Oct 10 Python
Python3多线程操作简单示例
May 22 Python
解决Python print 输出文本显示 gbk 编码错误问题
Jul 13 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
python抓取京东小米8手机配置信息
Nov 13 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
NumPy中的维度Axis详解
Nov 26 Python
python中altair可视化库实例用法
Jan 26 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 Python
Python 数据可视化之Bokeh详解
Nov 02 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
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
python实现八大排序算法(2)
2017/09/14 Python
Django 实现下载文件功能的示例
2018/03/06 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
Python给图像添加噪声具体操作
2019/03/03 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
浅析python中while循环和for循环
2019/11/19 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
Python几种常见算法汇总
2020/06/02 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
公司薪酬管理制度
2014/01/31 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python