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获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 Python
Django 登陆验证码和中间件的实现
Aug 17 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
django的ORM操作 增加和查询
Jul 26 Python
django 通过url实现简单的权限控制的例子
Aug 16 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 Python
Python序列化与反序列化相关知识总结
Jun 08 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安全编程之加密功能
2006/10/09 PHP
第十二节--类的自动加载
2006/11/16 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
Python 除法小技巧
2008/09/06 Python
python thread 并发且顺序运行示例
2009/04/09 Python
Python牛刀小试密码爆破
2011/02/03 Python
Python中设置变量访问权限的方法
2015/04/27 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
Python对象与引用的介绍
2019/01/24 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
志愿者活动总结报告
2014/06/27 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
2014年话务员工作总结
2014/11/19 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
大学班长竞选稿
2015/11/20 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript