Python之Event事件(简单教程)

Python之Event事件(简单教程)

摘要: 同进程的一样,线程的一个关键特性是每个线程都是独立运行且状态不可预测。如果程序中的其 他线程需要通过判断某个线程的状态来确定自己下一步的操作,这时线程同步问题就会变得非常棘手。为了解决这些问题,我们需要使用threading库中的Event对象。 对象包含一个可由线程设置的信号标志,它允许线程等待某些事件的发生。在 初始情况下,Event对象中的信号标志被设置为假。如果有线程等待一个Event对象, 而这个Event对象的标志为假,那么这个线程将会被一直阻塞直至该标志为真。一个线程如果将一个Event对象的信号标志设置为真,它将唤醒所有等待这个Event对象的线程。如果一个线程等待一个已经被设置为真的Event对象,那么它将忽略这个事件, 继续执行。

Event几种方法:

event.isSet():返回event的状态值;

event.wait():如果 event.isSet()==False将阻塞线程;

event.set(): 设置event的状态值为True,所有阻塞池的线程激活进入就绪状态, 等待操作系统调度;

event.clear():恢复event的状态值为False。

举例:

from threading import Thread,Event
import time

event=Event()

def light():
    print('红灯正亮着')
    time.sleep(3)
    event.set() #绿灯亮

def car(name):
    print('车%s正在等绿灯' %name)
    event.wait() #等灯绿 此时event为False,直到event.set()将其值设置为True,才会继续运行.
    print('车%s通行' %name)

if __name__ == '__main__':
    # 红绿灯
    t1=Thread(target=light)
    t1.start()
    # 车
    for i in range(10):
        t=Thread(target=car,args=(i,))
        t.start()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2128.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Unzip Yearly Subscription_@mapkey注解

    Unzip Yearly Subscription_@mapkey注解原文:http://werkzeug.pocoo.org/docs/0.12/local/#werkzeug.local.LocalProxySoonerorlateryouhavesomethingsyouwanttohaveineverysinglevieworhelperfunctionorwhatever.InPHPthewayt

    2022年9月25日
  • npm 更换包源

    npm 更换包源一、前言在每一次的实际开发过程中,我们都会下载相关的依赖包,最官方的是npm,但是该服务器对于国内开发者来说,下载起来是比较慢的,所以我们需要换源。(有梯子或者信任官网的请忽略)二、cnpm:国内对npm的镜像版本/**cnpm官网地址:https://npm.taobao.org/*cnpm的大多命令跟npm的是一致的,比如安装,卸载这些*/npminstall-gcnpm–registry=https://registry.npm.taobao.org

    2022年11月3日
  • Spring返回text/plain出现中文乱码

    Spring返回text/plain出现中文乱码今天在RestTemplate调试的时候发现返回的中文出现了乱码,使用POST

    2022年7月15日
  • 九章算法_九章算法(杭州)科技有限公司

    九章算法_九章算法(杭州)科技有限公司1BST迭代器注意点:1.实际就是中序遍历的非递归写法,迭代器就是要用Stack存储数据,不过把不同的模块功能进行了分割,而不是一次完成中序遍历;2.可以把添加到Stack单独抽取成一个函数

    2022年8月3日
  • 关于python的论文参考文献_java毕业论文参考文献

    关于python的论文参考文献_java毕业论文参考文献java论文参考文献英文时间:2015-06-12来源:未知本文字数:14132字作者:小韩单位:在写java毕业论文或高水平java学术论文时,要求参考一些java英文参考文献,外文文献一般体现了国际最新研究进展,让我们写的java论文与国际接轨,为了方便大家,这里学术堂整理了150篇Java论文参考文献英文。更多2020年最新java论文参考文献英文,请在文章末尾处查看。java论文参考…

    2022年9月28日
  • http 415 错误

    http 415 错误惯例:我是温浩然:http错误,415,以前没有遇到过,遇到的都是404,500什么的,今天遇到了415错误,找了其他人的,发现说的也不明白。我这里说一下吧,发生415错误的原因。你想要请求一个方法,这个方法需要传map类型的参数(哪怕是空的呢),你什么都没有传入,就报错415.

    2022年6月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号