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使用PyFetion来发送短信的例子
Apr 22 Python
跟老齐学Python之从if开始语句的征程
Sep 14 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
python 接收处理外带的参数方法
Dec 03 Python
Python使用type关键字创建类步骤详解
Jul 23 Python
python 类之间的参数传递方式
Dec 20 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
Pycharm自带Git实现版本管理的方法步骤
Sep 18 Python
Python高并发和多线程有什么关系
Nov 14 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
Python3中对json格式数据的分析处理
Jan 28 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 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的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
python 布尔操作实现代码
2013/03/23 Python
用Python中的字典来处理索引统计的方法
2015/05/05 Python
Python素数检测实例分析
2015/06/15 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
python实现石头剪刀布小游戏
2021/01/20 Python
Python小进度条显示代码
2019/03/05 Python
python opencv摄像头的简单应用
2019/06/06 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
销售顾问的岗位职责
2013/11/13 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
七年级作文之秋游
2019/10/21 职场文书
Redis RDB技术底层原理详解
2021/09/04 Redis