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生成器表达式和列表解析
Mar 10 Python
Python中的条件判断语句与循环语句用法小结
Mar 21 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
Feb 10 Python
Python爬虫框架Scrapy实例代码
Mar 04 Python
Python 从列表中取值和取索引的方法
Dec 25 Python
在Pycharm中修改文件默认打开方式的方法
Jan 17 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
python滑块验证码的破解实现
Nov 10 Python
Tensorflow 实现释放内存
Feb 03 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
Python自动化测试基础必备知识点总结
Feb 07 Python
Python3爬虫RedisDump的安装步骤
Feb 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
PHP版自动生成文章摘要
2008/07/23 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
jquery uaMatch源代码
2011/02/14 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
python字符串的常用操作方法小结
2016/05/21 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
linux面试题参考答案(10)
2013/11/04 面试题
如何写自我鉴定
2014/03/19 职场文书
百年校庆节目主持词
2014/03/27 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
安全目标责任书
2014/07/22 职场文书
社团活动总结格式
2014/08/29 职场文书
高考1977观后感
2015/06/04 职场文书
丧事主持词
2015/07/02 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技