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)
上一篇 2020年11月8日 下午9:33
下一篇 2020年11月8日 下午9:33


相关推荐

  • charles导致mac无法上网_charles手机设置代理后上不了网

    charles导致mac无法上网_charles手机设置代理后上不了网前言charles关闭后,发现网页突然打开了,那大概率是设置了代理,但明明已经关闭了charles,这是由于mac网络偏好设置中,使用的是手动代理,将其改为自动即可解决方法1打开网络偏好设置,

    2022年7月30日
    115
  • 卡方检验,U检验,t检验,F检验

    卡方检验,U检验,t检验,F检验卡方检验:主要用于等级资料。t检验:适用于计量资料、正态分布、方差具有齐性的两组间小样本比较。包括配对资料间、样本与均数间、两样本均数间比较三种,三者的计算公式不能混淆。也可以这样理解主要是用于小样本(样本容量小于30)的两个平均值差异程度的检验方法。U检验:检验应用条件与t检验基本一致,只是当大样本时用U检验,而小样本时则用t检验,t检验可以代替U检验。t检验和就是统计量为t,u的假…

    2022年6月19日
    48
  • 网络入门—家庭组网介绍&基本网络知识

    网络入门—家庭组网介绍&基本网络知识一般情况下家庭级 华为 TPlink 华三 路由器没有光口 只有电口 很多时候路由器 防火墙 无线路由器没有提供光口接入 可以利用并发连接数作为判断硬件的指数 可以理解为一秒钟可以新建多少个 TCP 连接 小线程 光纤不能直接插到路由器上 所以需要有中间转换器 光猫进行光电转换 所以可以利用并发连接数 吞吐率来衡量设备性能 该设备每秒可以处理 转发多少 M G 的流量

    2026年3月18日
    2
  • SQL 存储过程 调试

    SQL 存储过程 调试SQL 存储过程调试 SqlServer 输出 print 变量名 nbsp nbsp print nbsp NextCount nbsp nbsp nbsp nbsp print nbsp nbsp 输出常量 在需要的位置写上 然后执行下述操作 执行一遍 对该存储过程进行保存然后选择需要执行的存储过程 填写对应的参数 点击确定执行 执行后会出现下述图片 点击消息查看自己的 print 输出结果

    2026年3月26日
    2
  • 一把上架12套表情包,AI的效率真的高到离谱!附喂饭级教程及避坑指南

    一把上架12套表情包,AI的效率真的高到离谱!附喂饭级教程及避坑指南

    2026年3月15日
    2
  • Java实体类(entity)作用

    Java实体类(entity)作用对 java 实体类的众多理解 A nbsp 就是属性类 通常定义在 model 层里面 nbsp B nbsp 一般的实体类对应一个数据表 其中的属性对应数据表中的字段 好处 1 对对象实体的封装 体现 OO 思想 2 属性可以对字段定义和状态进行判断和过滤 3 把相关信息用一个实体类封装后 我们在程序中可以把实体类作为参数传递 更加方便 C nbsp 说白了就是为了让程序员在对数据库操作的时候不用写 SQL 语句 nbsp D nbsp 就是一个数据库表生成一个

    2026年3月18日
    2

发表回复

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

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