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 开发Activex组件方法
Nov 08 Python
Python中的高级数据结构详解
Mar 27 Python
实例讲解Python中global语句下全局变量的值的修改
Jun 16 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
Python设计模式之策略模式实例详解
Jan 21 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
基于OpenCV的网络实时视频流传输的实现
Nov 15 Python
python控制台打印log输出重复的解决方法
May 14 Python
总结Python变量的相关知识
Jun 28 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 缓存函数代码
2008/08/27 PHP
php自动载入类用法实例分析
2016/06/24 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
jquery 常用操作方法
2010/01/28 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
javascript 二进制运算技巧解析
2012/11/27 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
javascript中call,apply,bind的用法对比分析
2015/02/12 Javascript
javascript版2048小游戏
2015/03/18 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
Python常用的爬虫技巧总结
2016/03/28 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
python实现简单井字棋小游戏
2020/03/05 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
Python读写锁实现实现代码解析
2020/11/28 Python
解决python3输入的坑——input()
2020/12/05 Python
护士在校生自荐信
2014/02/01 职场文书
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
大学军训决心书
2015/02/05 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
小平小道观后感
2015/06/09 职场文书
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang
Python anaconda安装库命令详解
2021/10/16 Python
Java使用HttpClient实现文件下载
2022/08/14 Java/Android