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的SQLAlchemy框架使用入门
Apr 29 Python
python字符串编码识别模块chardet简单应用
Jun 15 Python
Python通过future处理并发问题
Oct 17 Python
使用python和Django完成博客数据库的迁移方法
Jan 05 Python
Python运行不显示DOS窗口的解决方法
Oct 22 Python
Python并发:多线程与多进程的详解
Jan 24 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
python 解决Fatal error in launcher:错误问题
May 21 Python
Python flask路由间传递变量实例详解
Jun 03 Python
django如何自定义manage.py管理命令
Apr 27 Python
教你怎么用python爬取爱奇艺热门电影
May 20 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页面运行时间的函数介绍
2013/07/01 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
js实现自定义路由
2017/02/04 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
[40:01]OG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
python实现发送邮件及附件功能
2021/03/02 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
python如何使用unittest测试接口
2018/04/04 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
2015年挂职干部工作总结
2015/05/14 职场文书
党支部评议意见
2015/06/02 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
python基础详解之if循环语句
2021/04/24 Python
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS